solidity-language-server 0.1.22

A fast Solidity language server powered by solc and Foundry
Documentation
1
{"contracts":{"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909.sol":{"ERC6909":{"evm":{"gasEstimates":null,"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","isOperator(address,address)":"b6363cf2","setOperator(address,bool)":"558a7297","supportsInterface(bytes4)":"01ffc9a7","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909Claims.sol":{"ERC6909Claims":{"evm":{"gasEstimates":null,"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","isOperator(address,address)":"b6363cf2","setOperator(address,bool)":"558a7297","supportsInterface(bytes4)":"01ffc9a7","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Extsload.sol":{"Extsload":{"evm":{"gasEstimates":null,"methodIdentifiers":{"extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Exttload.sol":{"Exttload":{"evm":{"gasEstimates":null,"methodIdentifiers":{"exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/NoDelegateCall.sol":{"NoDelegateCall":{"evm":{"gasEstimates":null,"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/PoolManager.sol":{"PoolManager":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"6924600","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address,uint256)":"infinite","approve(address,uint256,uint256)":"infinite","balanceOf(address,uint256)":"infinite","burn(address,uint256,uint256)":"infinite","clear(address,uint256)":"infinite","collectProtocolFees(address,address,uint256)":"infinite","donate((address,address,uint24,int24,address),uint256,uint256,bytes)":"infinite","extsload(bytes32)":"2595","extsload(bytes32,uint256)":"infinite","extsload(bytes32[])":"infinite","exttload(bytes32)":"549","exttload(bytes32[])":"infinite","initialize((address,address,uint24,int24,address),uint160)":"infinite","isOperator(address,address)":"infinite","mint(address,uint256,uint256)":"infinite","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"infinite","owner()":"2572","protocolFeeController()":"2619","protocolFeesAccrued(address)":"2891","setOperator(address,bool)":"infinite","setProtocolFee((address,address,uint24,int24,address),uint24)":"infinite","setProtocolFeeController(address)":"28088","settle()":"infinite","settleFor(address)":"infinite","supportsInterface(bytes4)":"738","swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"infinite","sync(address)":"infinite","take(address,address,uint256)":"infinite","transfer(address,uint256,uint256)":"infinite","transferFrom(address,address,uint256,uint256)":"infinite","transferOwnership(address)":"28491","unlock(bytes)":"infinite","updateDynamicLPFee((address,address,uint24,int24,address),uint24)":"infinite"},"internal":{"_accountDelta(Currency,int128,address)":"infinite","_accountPoolBalanceDelta(struct PoolKey memory,BalanceDelta,address)":"infinite","_getPool(PoolId)":"109","_isUnlocked()":"infinite","_settle(address)":"infinite","_swap(struct Pool.State storage pointer,PoolId,struct Pool.SwapParams memory,Currency)":"infinite"}},"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","burn(address,uint256,uint256)":"f5298aca","clear(address,uint256)":"80f0b44c","collectProtocolFees(address,address,uint256)":"8161b874","donate((address,address,uint24,int24,address),uint256,uint256,bytes)":"234266d7","extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff","exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f","initialize((address,address,uint24,int24,address),uint160)":"6276cbbe","isOperator(address,address)":"b6363cf2","mint(address,uint256,uint256)":"156e29f6","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"5a6bcfda","owner()":"8da5cb5b","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setOperator(address,bool)":"558a7297","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389","settle()":"11da60b4","settleFor(address)":"3dd45adb","supportsInterface(bytes4)":"01ffc9a7","swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"f3cd914c","sync(address)":"a5841194","take(address,address,uint256)":"0b0d9c09","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a","transferOwnership(address)":"f2fde38b","unlock(bytes)":"48c89491","updateDynamicLPFee((address,address,uint24,int24,address),uint24)":"52759651"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ProtocolFees.sol":{"ProtocolFees":{"evm":{"gasEstimates":null,"methodIdentifiers":{"collectProtocolFees(address,address,uint256)":"8161b874","owner()":"8da5cb5b","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389","transferOwnership(address)":"f2fde38b"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExtsload.sol":{"IExtsload":{"evm":{"gasEstimates":null,"methodIdentifiers":{"extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExttload.sol":{"IExttload":{"evm":{"gasEstimates":null,"methodIdentifiers":{"exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IHooks.sol":{"IHooks":{"evm":{"gasEstimates":null,"methodIdentifiers":{"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"9f063efc","afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"e1b4af69","afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)":"6fe7e6eb","afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"6c2bbe7e","afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)":"b47b2fb1","beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"259982e5","beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"b6a8b0fa","beforeInitialize(address,(address,address,uint24,int24,address),uint160)":"dc98354e","beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"21d0ee70","beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"575e24b4"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IPoolManager.sol":{"IPoolManager":{"evm":{"gasEstimates":null,"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","burn(address,uint256,uint256)":"f5298aca","clear(address,uint256)":"80f0b44c","collectProtocolFees(address,address,uint256)":"8161b874","donate((address,address,uint24,int24,address),uint256,uint256,bytes)":"234266d7","extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff","exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f","initialize((address,address,uint24,int24,address),uint160)":"6276cbbe","isOperator(address,address)":"b6363cf2","mint(address,uint256,uint256)":"156e29f6","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"5a6bcfda","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setOperator(address,bool)":"558a7297","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389","settle()":"11da60b4","settleFor(address)":"3dd45adb","swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"f3cd914c","sync(address)":"a5841194","take(address,address,uint256)":"0b0d9c09","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a","unlock(bytes)":"48c89491","updateDynamicLPFee((address,address,uint24,int24,address),uint24)":"52759651"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IProtocolFees.sol":{"IProtocolFees":{"evm":{"gasEstimates":null,"methodIdentifiers":{"collectProtocolFees(address,address,uint256)":"8161b874","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"IUnlockCallback":{"evm":{"gasEstimates":null,"methodIdentifiers":{"unlockCallback(bytes)":"91dd7346"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC20Minimal.sol":{"IERC20Minimal":{"evm":{"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC6909Claims.sol":{"IERC6909Claims":{"evm":{"gasEstimates":null,"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","isOperator(address,address)":"b6363cf2","setOperator(address,bool)":"558a7297","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/BitMath.sol":{"BitMath":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"leastSignificantBit(uint256)":"infinite","mostSignificantBit(uint256)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyDelta.sol":{"CurrencyDelta":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"_computeSlot(address,Currency)":"infinite","applyDelta(Currency,address,int128)":"infinite","getDelta(Currency,address)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyReserves.sol":{"CurrencyReserves":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"getSyncedCurrency()":"infinite","getSyncedReserves()":"infinite","resetCurrency()":"infinite","syncCurrencyAndReserves(Currency,uint256)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol":{"CustomRevert":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"bubbleUpAndRevertWith(address,bytes4,bytes4)":"infinite","revertWith(bytes4)":"infinite","revertWith(bytes4,address)":"infinite","revertWith(bytes4,address,address)":"infinite","revertWith(bytes4,int24)":"infinite","revertWith(bytes4,int24,int24)":"infinite","revertWith(bytes4,uint160)":"infinite","revertWith(bytes4,uint160,uint160)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint128.sol":{"FixedPoint128":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint96.sol":{"FixedPoint96":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FullMath.sol":{"FullMath":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"mulDiv(uint256,uint256,uint256)":"infinite","mulDivRoundingUp(uint256,uint256,uint256)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Hooks.sol":{"Hooks":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"afterDonate(contract IHooks,struct PoolKey memory,uint256,uint256,bytes calldata)":"infinite","afterInitialize(contract IHooks,struct PoolKey memory,uint160,int24)":"infinite","afterModifyLiquidity(contract IHooks,struct PoolKey memory,struct ModifyLiquidityParams memory,BalanceDelta,BalanceDelta,bytes calldata)":"infinite","afterSwap(contract IHooks,struct PoolKey memory,struct SwapParams memory,BalanceDelta,bytes calldata,BeforeSwapDelta)":"infinite","beforeDonate(contract IHooks,struct PoolKey memory,uint256,uint256,bytes calldata)":"infinite","beforeInitialize(contract IHooks,struct PoolKey memory,uint160)":"infinite","beforeModifyLiquidity(contract IHooks,struct PoolKey memory,struct ModifyLiquidityParams memory,bytes calldata)":"infinite","beforeSwap(contract IHooks,struct PoolKey memory,struct SwapParams memory,bytes calldata)":"infinite","callHook(contract IHooks,bytes memory)":"infinite","callHookWithReturnDelta(contract IHooks,bytes memory,bool)":"infinite","hasPermission(contract IHooks,uint160)":"infinite","isValidHookAddress(contract IHooks,uint24)":"infinite","validateHookPermissions(contract IHooks,struct Hooks.Permissions memory)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LPFeeLibrary.sol":{"LPFeeLibrary":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"69000","executionCost":"143","totalCost":"69143"},"external":{"DYNAMIC_FEE_FLAG()":"359","MAX_LP_FEE()":"315","OVERRIDE_FEE_FLAG()":"293","REMOVE_OVERRIDE_MASK()":"337"},"internal":{"getInitialLPFee(uint24)":"infinite","isDynamicFee(uint24)":"infinite","isOverride(uint24)":"infinite","isValid(uint24)":"infinite","removeOverrideFlag(uint24)":"infinite","removeOverrideFlagAndValidate(uint24)":"infinite","validate(uint24)":"infinite"}},"methodIdentifiers":{"DYNAMIC_FEE_FLAG()":"f26ef49d","MAX_LP_FEE()":"3fc48eba","OVERRIDE_FEE_FLAG()":"3b01d64d","REMOVE_OVERRIDE_MASK()":"6f95ebcf"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LiquidityMath.sol":{"LiquidityMath":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"addDelta(uint128,int128)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Lock.sol":{"Lock":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"isUnlocked()":"infinite","lock()":"infinite","unlock()":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/NonzeroDeltaCount.sol":{"NonzeroDeltaCount":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"decrement()":"infinite","increment()":"infinite","read()":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ParseBytes.sol":{"ParseBytes":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"parseFee(bytes memory)":"infinite","parseReturnDelta(bytes memory)":"infinite","parseSelector(bytes memory)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Pool.sol":{"Pool":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"checkPoolInitialized(struct Pool.State storage pointer)":"infinite","checkTicks(int24,int24)":"infinite","clearTick(struct Pool.State storage pointer,int24)":"infinite","crossTick(struct Pool.State storage pointer,int24,uint256,uint256)":"infinite","donate(struct Pool.State storage pointer,uint256,uint256)":"infinite","getFeeGrowthInside(struct Pool.State storage pointer,int24,int24)":"infinite","initialize(struct Pool.State storage pointer,uint160,uint24)":"infinite","modifyLiquidity(struct Pool.State storage pointer,struct Pool.ModifyLiquidityParams memory)":"infinite","setLPFee(struct Pool.State storage pointer,uint24)":"infinite","setProtocolFee(struct Pool.State storage pointer,uint24)":"infinite","swap(struct Pool.State storage pointer,struct Pool.SwapParams memory)":"infinite","tickSpacingToMaxLiquidityPerTick(int24)":"infinite","updateTick(struct Pool.State storage pointer,int24,int128,bool)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Position.sol":{"Position":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"calculatePositionKey(address,int24,int24,bytes32)":"infinite","get(mapping(bytes32 => struct Position.State storage ref),address,int24,int24,bytes32)":"infinite","update(struct Position.State storage pointer,int128,uint256,uint256)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"ProtocolFeeLibrary":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"37800","executionCost":"113","totalCost":"37913"},"external":{"MAX_PROTOCOL_FEE()":"293"},"internal":{"calculateSwapFee(uint16,uint24)":"infinite","getOneForZeroFee(uint24)":"infinite","getZeroForOneFee(uint24)":"infinite","isValidProtocolFee(uint24)":"infinite"}},"methodIdentifiers":{"MAX_PROTOCOL_FEE()":"b8ca3b83"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol":{"SafeCast":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"toInt128(int256)":"infinite","toInt128(uint256)":"infinite","toInt256(uint256)":"infinite","toUint128(int128)":"infinite","toUint128(uint256)":"infinite","toUint160(uint256)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SqrtPriceMath.sol":{"SqrtPriceMath":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"absDiff(uint160,uint160)":"infinite","getAmount0Delta(uint160,uint160,int128)":"infinite","getAmount0Delta(uint160,uint160,uint128,bool)":"infinite","getAmount1Delta(uint160,uint160,int128)":"infinite","getAmount1Delta(uint160,uint160,uint128,bool)":"infinite","getNextSqrtPriceFromAmount0RoundingUp(uint160,uint128,uint256,bool)":"infinite","getNextSqrtPriceFromAmount1RoundingDown(uint160,uint128,uint256,bool)":"infinite","getNextSqrtPriceFromInput(uint160,uint128,uint256,bool)":"infinite","getNextSqrtPriceFromOutput(uint160,uint128,uint256,bool)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SwapMath.sol":{"SwapMath":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"computeSwapStep(uint160,uint160,uint128,int256,uint24)":"infinite","getSqrtPriceTarget(bool,uint160,uint160)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickBitmap.sol":{"TickBitmap":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"compress(int24,int24)":"infinite","flipTick(mapping(int16 => uint256),int24,int24)":"infinite","nextInitializedTickWithinOneWord(mapping(int16 => uint256),int24,int24,bool)":"infinite","position(int24)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickMath.sol":{"TickMath":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"getSqrtPriceAtTick(int24)":"infinite","getTickAtSqrtPrice(uint160)":"infinite","maxUsableTick(int24)":"infinite","minUsableTick(int24)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/UnsafeMath.sol":{"UnsafeMath":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"divRoundingUp(uint256,uint256)":"infinite","simpleMulDiv(uint256,uint256,uint256)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol":{"BalanceDeltaLibrary":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"43800","executionCost":"119","totalCost":"43919"},"external":{"ZERO_DELTA()":"infinite"},"internal":{"amount0(BalanceDelta)":"infinite","amount1(BalanceDelta)":"infinite"}},"methodIdentifiers":{"ZERO_DELTA()":"91cb4669"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BeforeSwapDelta.sol":{"BeforeSwapDeltaLibrary":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"43800","executionCost":"119","totalCost":"43919"},"external":{"ZERO_DELTA()":"infinite"},"internal":{"getSpecifiedDelta(BeforeSwapDelta)":"infinite","getUnspecifiedDelta(BeforeSwapDelta)":"infinite"}},"methodIdentifiers":{"ZERO_DELTA()":"91cb4669"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol":{"CurrencyLibrary":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"54200","executionCost":"128","totalCost":"54328"},"external":{"ADDRESS_ZERO()":"infinite"},"internal":{"balanceOf(Currency,address)":"infinite","balanceOfSelf(Currency)":"infinite","fromId(uint256)":"infinite","isAddressZero(Currency)":"infinite","toId(Currency)":"infinite","transfer(Currency,address,uint256)":"infinite"}},"methodIdentifiers":{"ADDRESS_ZERO()":"66e79509"}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol":{"PoolIdLibrary":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"toId(struct PoolKey memory)":"infinite"}},"methodIdentifiers":{}}}},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Slot0.sol":{"Slot0Library":{"evm":{"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"92","totalCost":"17092"},"internal":{"lpFee(Slot0)":"infinite","protocolFee(Slot0)":"infinite","setLpFee(Slot0,uint24)":"infinite","setProtocolFee(Slot0,uint24)":"infinite","setSqrtPriceX96(Slot0,uint160)":"infinite","setTick(Slot0,int24)":"infinite","sqrtPriceX96(Slot0)":"infinite","tick(Slot0)":"infinite"}},"methodIdentifiers":{}}}},"v4-core/lib/solmate/src/auth/Owned.sol":{"Owned":{"evm":{"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","transferOwnership(address)":"f2fde38b"}}}}},"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  --> /Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyReserves.sol:23:13:\n   |\n23 |             tstore(CURRENCY_SLOT, 0)\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":811,"file":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyReserves.sol","start":805},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 34623 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  --> /Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/PoolManager.sol:80:1:\n   |\n80 | contract PoolManager is IPoolManager, ProtocolFees, NoDelegateCall, ERC6909Claims, Extsload, Exttload {\n   | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 34623 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":17612,"file":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/PoolManager.sol","start":4791},"type":"Warning"}],"sources":{"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909.sol","exportedSymbols":{"ERC6909":[7191],"IERC6909Claims":[7569]},"id":7192,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6900,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC6909Claims.sol","file":"./interfaces/external/IERC6909Claims.sol","id":6902,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7192,"sourceUnit":7570,"src":"57:72:0","symbolAliases":[{"foreign":{"id":6901,"name":"IERC6909Claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7569,"src":"65:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6904,"name":"IERC6909Claims","nameLocations":["492:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":7569,"src":"492:14:0"},"id":6905,"nodeType":"InheritanceSpecifier","src":"492:14:0"}],"canonicalName":"ERC6909","contractDependencies":[],"contractKind":"contract","documentation":{"id":6903,"nodeType":"StructuredDocumentation","src":"131:332:0","text":"@notice Minimalist and gas efficient standard ERC6909 implementation.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC6909.sol)\n @dev Copied from the commit at 4b47a19038b798b4a33d9749d25e570443520647\n @dev This contract has been modified from the implementation at the above link."},"fullyImplemented":true,"id":7191,"linearizedBaseContracts":[7191,7569],"name":"ERC6909","nameLocation":"481:7:0","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[7520],"constant":false,"functionSelector":"b6363cf2","id":6911,"mutability":"mutable","name":"isOperator","nameLocation":"775:10:0","nodeType":"VariableDeclaration","scope":7191,"src":"697:88:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":6910,"keyName":"owner","keyNameLocation":"713:5:0","keyType":{"id":6906,"name":"address","nodeType":"ElementaryTypeName","src":"705:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"697:70:0","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":6909,"keyName":"operator","keyNameLocation":"738:8:0","keyType":{"id":6907,"name":"address","nodeType":"ElementaryTypeName","src":"730:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"722:44:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"isOperator","valueNameLocation":"755:10:0","valueType":{"id":6908,"name":"bool","nodeType":"ElementaryTypeName","src":"750:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"baseFunctions":[7498],"constant":false,"functionSelector":"00fdd58e","id":6917,"mutability":"mutable","name":"balanceOf","nameLocation":"864:9:0","nodeType":"VariableDeclaration","scope":7191,"src":"792:81:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":6916,"keyName":"owner","keyNameLocation":"808:5:0","keyType":{"id":6912,"name":"address","nodeType":"ElementaryTypeName","src":"800:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"792:64:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6915,"keyName":"id","keyNameLocation":"833:2:0","keyType":{"id":6913,"name":"uint256","nodeType":"ElementaryTypeName","src":"825:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"817:38:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"balance","valueNameLocation":"847:7:0","valueType":{"id":6914,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"baseFunctions":[7510],"constant":false,"functionSelector":"598af9e7","id":6925,"mutability":"mutable","name":"allowance","nameLocation":"979:9:0","nodeType":"VariableDeclaration","scope":7191,"src":"880:108:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => uint256)))"},"typeName":{"id":6924,"keyName":"owner","keyNameLocation":"896:5:0","keyType":{"id":6918,"name":"address","nodeType":"ElementaryTypeName","src":"888:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"880:91:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => uint256)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6923,"keyName":"spender","keyNameLocation":"921:7:0","keyType":{"id":6919,"name":"address","nodeType":"ElementaryTypeName","src":"913:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"905:65:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6922,"keyName":"id","keyNameLocation":"948:2:0","keyType":{"id":6920,"name":"uint256","nodeType":"ElementaryTypeName","src":"940:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"932:37:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"amount","valueNameLocation":"962:6:0","valueType":{"id":6921,"name":"uint256","nodeType":"ElementaryTypeName","src":"954:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}}},"visibility":"public"},{"baseFunctions":[7532],"body":{"id":6965,"nodeType":"Block","src":"1272:188:0","statements":[{"expression":{"id":6943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6936,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1282:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":6940,"indexExpression":{"expression":{"id":6937,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1292:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1296:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1292:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1282:21:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":6941,"indexExpression":{"id":6939,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1304:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1282:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6942,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"1311:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1282:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6944,"nodeType":"ExpressionStatement","src":"1282:35:0"},{"expression":{"id":6951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6945,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1328:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":6948,"indexExpression":{"id":6946,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6927,"src":"1338:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1328:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":6949,"indexExpression":{"id":6947,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1348:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1328:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6950,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"1355:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1328:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6952,"nodeType":"ExpressionStatement","src":"1328:33:0"},{"eventCall":{"arguments":[{"expression":{"id":6954,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1386:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1390:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1386:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6956,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1398:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1402:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1398:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6958,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6927,"src":"1410:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6959,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1420:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6960,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"1424:6:0","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6953,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"1377:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1377:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6962,"nodeType":"EmitStatement","src":"1372:59:0"},{"expression":{"hexValue":"74727565","id":6963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1449:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6935,"id":6964,"nodeType":"Return","src":"1442:11:0"}]},"functionSelector":"095bcdb6","id":6966,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1187:8:0","nodeType":"FunctionDefinition","parameters":{"id":6932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6927,"mutability":"mutable","name":"receiver","nameLocation":"1204:8:0","nodeType":"VariableDeclaration","scope":6966,"src":"1196:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6926,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6929,"mutability":"mutable","name":"id","nameLocation":"1222:2:0","nodeType":"VariableDeclaration","scope":6966,"src":"1214:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1214:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6931,"mutability":"mutable","name":"amount","nameLocation":"1234:6:0","nodeType":"VariableDeclaration","scope":6966,"src":"1226:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6930,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1195:46:0"},"returnParameters":{"id":6935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6966,"src":"1266:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6933,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:6:0"},"scope":7191,"src":"1178:282:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7546],"body":{"id":7052,"nodeType":"Block","src":"1580:427:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6979,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1594:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1598:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1594:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6981,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6968,"src":"1608:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1594:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1618:31:0","subExpression":{"baseExpression":{"baseExpression":{"id":6983,"name":"isOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6911,"src":"1619:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":6985,"indexExpression":{"id":6984,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6968,"src":"1630:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1619:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6988,"indexExpression":{"expression":{"id":6986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1638:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1642:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1638:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1619:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1594:55:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7024,"nodeType":"IfStatement","src":"1590:237:0","trueBody":{"id":7023,"nodeType":"Block","src":"1651:176:0","statements":[{"assignments":[6992],"declarations":[{"constant":false,"id":6992,"mutability":"mutable","name":"allowed","nameLocation":"1673:7:0","nodeType":"VariableDeclaration","scope":7023,"src":"1665:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7001,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":6993,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"1683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => uint256)))"}},"id":6995,"indexExpression":{"id":6994,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6968,"src":"1693:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1683:17:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":6998,"indexExpression":{"expression":{"id":6996,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1701:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1705:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1701:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1683:29:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7000,"indexExpression":{"id":6999,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"1713:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1683:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1665:51:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7002,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6992,"src":"1734:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":7005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1750:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7004,"name":"uint256","nodeType":"ElementaryTypeName","src":"1750:7:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7003,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1745:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1745:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1759:3:0","memberName":"max","nodeType":"MemberAccess","src":"1745:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1734:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7022,"nodeType":"IfStatement","src":"1730:86:0","trueBody":{"expression":{"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":7009,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"1764:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => uint256)))"}},"id":7014,"indexExpression":{"id":7010,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6968,"src":"1774:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1764:17:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7015,"indexExpression":{"expression":{"id":7011,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1782:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1786:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1782:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1764:29:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7016,"indexExpression":{"id":7013,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"1794:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1764:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7017,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6992,"src":"1800:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7018,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"1810:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1800:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1764:52:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7021,"nodeType":"ExpressionStatement","src":"1764:52:0"}}]}},{"expression":{"id":7031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7025,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1837:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7028,"indexExpression":{"id":7026,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6968,"src":"1847:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1837:17:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7029,"indexExpression":{"id":7027,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"1855:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1837:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7030,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"1862:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1837:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7032,"nodeType":"ExpressionStatement","src":"1837:31:0"},{"expression":{"id":7039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7033,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1879:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7036,"indexExpression":{"id":7034,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6970,"src":"1889:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1879:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7037,"indexExpression":{"id":7035,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"1899:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1879:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7038,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"1906:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7040,"nodeType":"ExpressionStatement","src":"1879:33:0"},{"eventCall":{"arguments":[{"expression":{"id":7042,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1937:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1941:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1937:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7044,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6968,"src":"1949:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7045,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6970,"src":"1957:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7046,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"1967:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7047,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"1971:6:0","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7041,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"1928:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":7048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7049,"nodeType":"EmitStatement","src":"1923:55:0"},{"expression":{"hexValue":"74727565","id":7050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1996:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6978,"id":7051,"nodeType":"Return","src":"1989:11:0"}]},"functionSelector":"fe99049a","id":7053,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"1475:12:0","nodeType":"FunctionDefinition","parameters":{"id":6975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6968,"mutability":"mutable","name":"sender","nameLocation":"1496:6:0","nodeType":"VariableDeclaration","scope":7053,"src":"1488:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6967,"name":"address","nodeType":"ElementaryTypeName","src":"1488:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6970,"mutability":"mutable","name":"receiver","nameLocation":"1512:8:0","nodeType":"VariableDeclaration","scope":7053,"src":"1504:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6969,"name":"address","nodeType":"ElementaryTypeName","src":"1504:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6972,"mutability":"mutable","name":"id","nameLocation":"1530:2:0","nodeType":"VariableDeclaration","scope":7053,"src":"1522:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6971,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6974,"mutability":"mutable","name":"amount","nameLocation":"1542:6:0","nodeType":"VariableDeclaration","scope":7053,"src":"1534:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6973,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1487:62:0"},"returnParameters":{"id":6978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6977,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7053,"src":"1574:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6976,"name":"bool","nodeType":"ElementaryTypeName","src":"1574:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1573:6:0"},"scope":7191,"src":"1466:541:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7558],"body":{"id":7085,"nodeType":"Block","src":"2105:139:0","statements":[{"expression":{"id":7073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":7064,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"2115:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => uint256)))"}},"id":7069,"indexExpression":{"expression":{"id":7065,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2125:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2129:6:0","memberName":"sender","nodeType":"MemberAccess","src":"2125:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2115:21:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7070,"indexExpression":{"id":7067,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7055,"src":"2137:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2115:30:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7071,"indexExpression":{"id":7068,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7057,"src":"2146:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2115:34:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7072,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"2152:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2115:43:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7074,"nodeType":"ExpressionStatement","src":"2115:43:0"},{"eventCall":{"arguments":[{"expression":{"id":7076,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2183:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2187:6:0","memberName":"sender","nodeType":"MemberAccess","src":"2183:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7078,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7055,"src":"2195:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7079,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7057,"src":"2204:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7080,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"2208:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7075,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7476,"src":"2174:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":7081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7082,"nodeType":"EmitStatement","src":"2169:46:0"},{"expression":{"hexValue":"74727565","id":7083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2233:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7063,"id":7084,"nodeType":"Return","src":"2226:11:0"}]},"functionSelector":"426a8493","id":7086,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2022:7:0","nodeType":"FunctionDefinition","parameters":{"id":7060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7055,"mutability":"mutable","name":"spender","nameLocation":"2038:7:0","nodeType":"VariableDeclaration","scope":7086,"src":"2030:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7054,"name":"address","nodeType":"ElementaryTypeName","src":"2030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7057,"mutability":"mutable","name":"id","nameLocation":"2055:2:0","nodeType":"VariableDeclaration","scope":7086,"src":"2047:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7056,"name":"uint256","nodeType":"ElementaryTypeName","src":"2047:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7059,"mutability":"mutable","name":"amount","nameLocation":"2067:6:0","nodeType":"VariableDeclaration","scope":7086,"src":"2059:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7058,"name":"uint256","nodeType":"ElementaryTypeName","src":"2059:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2029:45:0"},"returnParameters":{"id":7063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7086,"src":"2099:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7061,"name":"bool","nodeType":"ElementaryTypeName","src":"2099:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2098:6:0"},"scope":7191,"src":"2013:231:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7568],"body":{"id":7113,"nodeType":"Block","src":"2334:141:0","statements":[{"expression":{"id":7102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7095,"name":"isOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6911,"src":"2344:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7099,"indexExpression":{"expression":{"id":7096,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2355:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2359:6:0","memberName":"sender","nodeType":"MemberAccess","src":"2355:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2344:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7100,"indexExpression":{"id":7098,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"2367:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2344:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7101,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"2379:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2344:43:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7103,"nodeType":"ExpressionStatement","src":"2344:43:0"},{"eventCall":{"arguments":[{"expression":{"id":7105,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2415:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2419:6:0","memberName":"sender","nodeType":"MemberAccess","src":"2415:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7107,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"2427:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7108,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"2437:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7104,"name":"OperatorSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7466,"src":"2403:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2403:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7110,"nodeType":"EmitStatement","src":"2398:48:0"},{"expression":{"hexValue":"74727565","id":7111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2464:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7094,"id":7112,"nodeType":"Return","src":"2457:11:0"}]},"functionSelector":"558a7297","id":7114,"implemented":true,"kind":"function","modifiers":[],"name":"setOperator","nameLocation":"2259:11:0","nodeType":"FunctionDefinition","parameters":{"id":7091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7088,"mutability":"mutable","name":"operator","nameLocation":"2279:8:0","nodeType":"VariableDeclaration","scope":7114,"src":"2271:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7087,"name":"address","nodeType":"ElementaryTypeName","src":"2271:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7090,"mutability":"mutable","name":"approved","nameLocation":"2294:8:0","nodeType":"VariableDeclaration","scope":7114,"src":"2289:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7089,"name":"bool","nodeType":"ElementaryTypeName","src":"2289:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2270:33:0"},"returnParameters":{"id":7094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7093,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7114,"src":"2328:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7092,"name":"bool","nodeType":"ElementaryTypeName","src":"2328:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2327:6:0"},"scope":7191,"src":"2250:225:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7129,"nodeType":"Block","src":"2745:159:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7121,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7116,"src":"2762:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031666663396137","id":7122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2777:10:0","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"src":"2762:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7124,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7116,"src":"2837:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783066363332666233","id":7125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2852:10:0","typeDescriptions":{"typeIdentifier":"t_rational_258158515_by_1","typeString":"int_const 258158515"},"value":"0x0f632fb3"},"src":"2837:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2762:100:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7120,"id":7128,"nodeType":"Return","src":"2755:107:0"}]},"functionSelector":"01ffc9a7","id":7130,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2672:17:0","nodeType":"FunctionDefinition","parameters":{"id":7117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7116,"mutability":"mutable","name":"interfaceId","nameLocation":"2697:11:0","nodeType":"VariableDeclaration","scope":7130,"src":"2690:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7115,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2690:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2689:20:0"},"returnParameters":{"id":7120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7130,"src":"2739:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7118,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:0"},"scope":7191,"src":"2663:241:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":7159,"nodeType":"Block","src":"3176:120:0","statements":[{"expression":{"id":7145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7139,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"3186:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7142,"indexExpression":{"id":7140,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7132,"src":"3196:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3186:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7143,"indexExpression":{"id":7141,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7134,"src":"3206:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3186:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7144,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7136,"src":"3213:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3186:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7146,"nodeType":"ExpressionStatement","src":"3186:33:0"},{"eventCall":{"arguments":[{"expression":{"id":7148,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3244:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3248:6:0","memberName":"sender","nodeType":"MemberAccess","src":"3244:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3264:1:0","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":7151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3256:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7150,"name":"address","nodeType":"ElementaryTypeName","src":"3256:7:0","typeDescriptions":{}}},"id":7153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3256:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7154,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7132,"src":"3268:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7155,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7134,"src":"3278:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7156,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7136,"src":"3282:6:0","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7147,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"3235:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":7157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3235:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7158,"nodeType":"EmitStatement","src":"3230:59:0"}]},"id":7160,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"3107:5:0","nodeType":"FunctionDefinition","parameters":{"id":7137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7132,"mutability":"mutable","name":"receiver","nameLocation":"3121:8:0","nodeType":"VariableDeclaration","scope":7160,"src":"3113:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7131,"name":"address","nodeType":"ElementaryTypeName","src":"3113:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7134,"mutability":"mutable","name":"id","nameLocation":"3139:2:0","nodeType":"VariableDeclaration","scope":7160,"src":"3131:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7133,"name":"uint256","nodeType":"ElementaryTypeName","src":"3131:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7136,"mutability":"mutable","name":"amount","nameLocation":"3151:6:0","nodeType":"VariableDeclaration","scope":7160,"src":"3143:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7135,"name":"uint256","nodeType":"ElementaryTypeName","src":"3143:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3112:46:0"},"returnParameters":{"id":7138,"nodeType":"ParameterList","parameters":[],"src":"3176:0:0"},"scope":7191,"src":"3098:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7189,"nodeType":"Block","src":"3378:116:0","statements":[{"expression":{"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7169,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"3388:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7172,"indexExpression":{"id":7170,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"3398:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3388:17:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7173,"indexExpression":{"id":7171,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7164,"src":"3406:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3388:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7174,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7166,"src":"3413:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3388:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7176,"nodeType":"ExpressionStatement","src":"3388:31:0"},{"eventCall":{"arguments":[{"expression":{"id":7178,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3444:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3448:6:0","memberName":"sender","nodeType":"MemberAccess","src":"3444:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7180,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"3456:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3472:1:0","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":7182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3464:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7181,"name":"address","nodeType":"ElementaryTypeName","src":"3464:7:0","typeDescriptions":{}}},"id":7184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3464:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7185,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7164,"src":"3476:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7186,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7166,"src":"3480:6:0","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7177,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"3435:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":7187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3435:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7188,"nodeType":"EmitStatement","src":"3430:57:0"}]},"id":7190,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"3311:5:0","nodeType":"FunctionDefinition","parameters":{"id":7167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7162,"mutability":"mutable","name":"sender","nameLocation":"3325:6:0","nodeType":"VariableDeclaration","scope":7190,"src":"3317:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7161,"name":"address","nodeType":"ElementaryTypeName","src":"3317:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7164,"mutability":"mutable","name":"id","nameLocation":"3341:2:0","nodeType":"VariableDeclaration","scope":7190,"src":"3333:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7163,"name":"uint256","nodeType":"ElementaryTypeName","src":"3333:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7166,"mutability":"mutable","name":"amount","nameLocation":"3353:6:0","nodeType":"VariableDeclaration","scope":7190,"src":"3345:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7165,"name":"uint256","nodeType":"ElementaryTypeName","src":"3345:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3316:44:0"},"returnParameters":{"id":7168,"nodeType":"ParameterList","parameters":[],"src":"3378:0:0"},"scope":7191,"src":"3302:192:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":7192,"src":"463:3033:0","usedErrors":[],"usedEvents":[7466,7476,7488]}],"src":"32:3465:0"},"id":0},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909Claims.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909Claims.sol","exportedSymbols":{"ERC6909":[7191],"ERC6909Claims":[1289]},"id":1290,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1218,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:1"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909.sol","file":"./ERC6909.sol","id":1220,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1290,"sourceUnit":7192,"src":"57:38:1","symbolAliases":[{"foreign":{"id":1219,"name":"ERC6909","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7191,"src":"65:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1222,"name":"ERC6909","nameLocations":["220:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":7191,"src":"220:7:1"},"id":1223,"nodeType":"InheritanceSpecifier","src":"220:7:1"}],"canonicalName":"ERC6909Claims","contractDependencies":[],"contractKind":"contract","documentation":{"id":1221,"nodeType":"StructuredDocumentation","src":"97:88:1","text":"@notice ERC6909Claims inherits ERC6909 and implements an internal burnFrom function"},"fullyImplemented":true,"id":1289,"linearizedBaseContracts":[1289,7191,7569],"name":"ERC6909Claims","nameLocation":"203:13:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":1287,"nodeType":"Block","src":"600:355:1","statements":[{"assignments":[1234],"declarations":[{"constant":false,"id":1234,"mutability":"mutable","name":"sender","nameLocation":"618:6:1","nodeType":"VariableDeclaration","scope":1287,"src":"610:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1233,"name":"address","nodeType":"ElementaryTypeName","src":"610:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1237,"initialValue":{"expression":{"id":1235,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"627:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"631:6:1","memberName":"sender","nodeType":"MemberAccess","src":"627:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"610:27:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1238,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1226,"src":"651:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1239,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"659:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"651:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"669:25:1","subExpression":{"baseExpression":{"baseExpression":{"id":1241,"name":"isOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6911,"src":"670:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1243,"indexExpression":{"id":1242,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1226,"src":"681:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"670:16:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1245,"indexExpression":{"id":1244,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"687:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"670:24:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"651:43:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1280,"nodeType":"IfStatement","src":"647:269:1","trueBody":{"id":1279,"nodeType":"Block","src":"696:220:1","statements":[{"assignments":[1249],"declarations":[{"constant":false,"id":1249,"mutability":"mutable","name":"senderAllowance","nameLocation":"718:15:1","nodeType":"VariableDeclaration","scope":1279,"src":"710:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1248,"name":"uint256","nodeType":"ElementaryTypeName","src":"710:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1257,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":1250,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"736:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => uint256)))"}},"id":1252,"indexExpression":{"id":1251,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1226,"src":"746:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"736:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1254,"indexExpression":{"id":1253,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"752:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"736:23:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1256,"indexExpression":{"id":1255,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"760:2:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"736:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"710:53:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1258,"name":"senderAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"781:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":1261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"805:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1260,"name":"uint256","nodeType":"ElementaryTypeName","src":"805:7:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1259,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"800:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"800:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"814:3:1","memberName":"max","nodeType":"MemberAccess","src":"800:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"781:36:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1278,"nodeType":"IfStatement","src":"777:129:1","trueBody":{"id":1277,"nodeType":"Block","src":"819:87:1","statements":[{"expression":{"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":1265,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"837:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => uint256)))"}},"id":1269,"indexExpression":{"id":1266,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1226,"src":"847:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"837:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1270,"indexExpression":{"id":1267,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"853:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"837:23:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1271,"indexExpression":{"id":1268,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"861:2:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"837:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1272,"name":"senderAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"867:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1273,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1230,"src":"885:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"867:24:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"837:54:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1276,"nodeType":"ExpressionStatement","src":"837:54:1"}]}}]}},{"expression":{"arguments":[{"id":1282,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1226,"src":"931:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1283,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"937:2:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1284,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1230,"src":"941:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1281,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7190,"src":"925:5:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"925:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1286,"nodeType":"ExpressionStatement","src":"925:23:1"}]},"documentation":{"id":1224,"nodeType":"StructuredDocumentation","src":"234:291:1","text":"@notice Burn `amount` tokens of token type `id` from `from`.\n @dev if sender is not `from` they must be an operator or have sufficient allowance.\n @param from The address to burn tokens from.\n @param id The currency to burn.\n @param amount The amount to burn."},"id":1288,"implemented":true,"kind":"function","modifiers":[],"name":"_burnFrom","nameLocation":"539:9:1","nodeType":"FunctionDefinition","parameters":{"id":1231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1226,"mutability":"mutable","name":"from","nameLocation":"557:4:1","nodeType":"VariableDeclaration","scope":1288,"src":"549:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1225,"name":"address","nodeType":"ElementaryTypeName","src":"549:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1228,"mutability":"mutable","name":"id","nameLocation":"571:2:1","nodeType":"VariableDeclaration","scope":1288,"src":"563:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1227,"name":"uint256","nodeType":"ElementaryTypeName","src":"563:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1230,"mutability":"mutable","name":"amount","nameLocation":"583:6:1","nodeType":"VariableDeclaration","scope":1288,"src":"575:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1229,"name":"uint256","nodeType":"ElementaryTypeName","src":"575:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"548:42:1"},"returnParameters":{"id":1232,"nodeType":"ParameterList","parameters":[],"src":"600:0:1"},"scope":1289,"src":"530:425:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1290,"src":"185:772:1","usedErrors":[],"usedEvents":[7466,7476,7488]}],"src":"32:926:1"},"id":1},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Extsload.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Extsload.sol","exportedSymbols":{"Extsload":[1332],"IExtsload":[7224]},"id":1333,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1291,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:2"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExtsload.sol","file":"./interfaces/IExtsload.sol","id":1293,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1333,"sourceUnit":7225,"src":"57:53:2","symbolAliases":[{"foreign":{"id":1292,"name":"IExtsload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7224,"src":"65:9:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1295,"name":"IExtsload","nameLocations":["291:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":7224,"src":"291:9:2"},"id":1296,"nodeType":"InheritanceSpecifier","src":"291:9:2"}],"canonicalName":"Extsload","contractDependencies":[],"contractKind":"contract","documentation":{"id":1294,"nodeType":"StructuredDocumentation","src":"112:149:2","text":"@notice Enables public storage access for efficient state retrieval by external contracts.\n https://eips.ethereum.org/EIPS/eip-2330#rationale"},"fullyImplemented":true,"id":1332,"linearizedBaseContracts":[1332,7224],"name":"Extsload","nameLocation":"279:8:2","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[7202],"body":{"id":1305,"nodeType":"Block","src":"401:115:2","statements":[{"AST":{"nativeSrc":"436:74:2","nodeType":"YulBlock","src":"436:74:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"457:1:2","nodeType":"YulLiteral","src":"457:1:2","type":"","value":"0"},{"arguments":[{"name":"slot","nativeSrc":"466:4:2","nodeType":"YulIdentifier","src":"466:4:2"}],"functionName":{"name":"sload","nativeSrc":"460:5:2","nodeType":"YulIdentifier","src":"460:5:2"},"nativeSrc":"460:11:2","nodeType":"YulFunctionCall","src":"460:11:2"}],"functionName":{"name":"mstore","nativeSrc":"450:6:2","nodeType":"YulIdentifier","src":"450:6:2"},"nativeSrc":"450:22:2","nodeType":"YulFunctionCall","src":"450:22:2"},"nativeSrc":"450:22:2","nodeType":"YulExpressionStatement","src":"450:22:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"492:1:2","nodeType":"YulLiteral","src":"492:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"495:4:2","nodeType":"YulLiteral","src":"495:4:2","type":"","value":"0x20"}],"functionName":{"name":"return","nativeSrc":"485:6:2","nodeType":"YulIdentifier","src":"485:6:2"},"nativeSrc":"485:15:2","nodeType":"YulFunctionCall","src":"485:15:2"},"nativeSrc":"485:15:2","nodeType":"YulExpressionStatement","src":"485:15:2"}]},"evmVersion":"cancun","externalReferences":[{"declaration":1299,"isOffset":false,"isSlot":false,"src":"466:4:2","valueSize":1}],"flags":["memory-safe"],"id":1304,"nodeType":"InlineAssembly","src":"411:99:2"}]},"documentation":{"id":1297,"nodeType":"StructuredDocumentation","src":"307:25:2","text":"@inheritdoc IExtsload"},"functionSelector":"1e2eaeaf","id":1306,"implemented":true,"kind":"function","modifiers":[],"name":"extsload","nameLocation":"346:8:2","nodeType":"FunctionDefinition","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1299,"mutability":"mutable","name":"slot","nameLocation":"363:4:2","nodeType":"VariableDeclaration","scope":1306,"src":"355:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1298,"name":"bytes32","nodeType":"ElementaryTypeName","src":"355:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"354:14:2"},"returnParameters":{"id":1303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1306,"src":"392:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1301,"name":"bytes32","nodeType":"ElementaryTypeName","src":"392:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"391:9:2"},"scope":1332,"src":"337:179:2","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[7213],"body":{"id":1318,"nodeType":"Block","src":"646:887:2","statements":[{"AST":{"nativeSrc":"681:846:2","nodeType":"YulBlock","src":"681:846:2","statements":[{"nativeSrc":"695:25:2","nodeType":"YulVariableDeclaration","src":"695:25:2","value":{"arguments":[{"kind":"number","nativeSrc":"715:4:2","nodeType":"YulLiteral","src":"715:4:2","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"709:5:2","nodeType":"YulIdentifier","src":"709:5:2"},"nativeSrc":"709:11:2","nodeType":"YulFunctionCall","src":"709:11:2"},"variables":[{"name":"memptr","nativeSrc":"699:6:2","nodeType":"YulTypedName","src":"699:6:2","type":""}]},{"nativeSrc":"733:19:2","nodeType":"YulVariableDeclaration","src":"733:19:2","value":{"name":"memptr","nativeSrc":"746:6:2","nodeType":"YulIdentifier","src":"746:6:2"},"variables":[{"name":"start","nativeSrc":"737:5:2","nodeType":"YulTypedName","src":"737:5:2","type":""}]},{"nativeSrc":"857:28:2","nodeType":"YulVariableDeclaration","src":"857:28:2","value":{"arguments":[{"kind":"number","nativeSrc":"875:1:2","nodeType":"YulLiteral","src":"875:1:2","type":"","value":"5"},{"name":"nSlots","nativeSrc":"878:6:2","nodeType":"YulIdentifier","src":"878:6:2"}],"functionName":{"name":"shl","nativeSrc":"871:3:2","nodeType":"YulIdentifier","src":"871:3:2"},"nativeSrc":"871:14:2","nodeType":"YulFunctionCall","src":"871:14:2"},"variables":[{"name":"length","nativeSrc":"861:6:2","nodeType":"YulTypedName","src":"861:6:2","type":""}]},{"expression":{"arguments":[{"name":"memptr","nativeSrc":"977:6:2","nodeType":"YulIdentifier","src":"977:6:2"},{"kind":"number","nativeSrc":"985:4:2","nodeType":"YulLiteral","src":"985:4:2","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"970:6:2","nodeType":"YulIdentifier","src":"970:6:2"},"nativeSrc":"970:20:2","nodeType":"YulFunctionCall","src":"970:20:2"},"nativeSrc":"970:20:2","nodeType":"YulExpressionStatement","src":"970:20:2"},{"expression":{"arguments":[{"arguments":[{"name":"memptr","nativeSrc":"1068:6:2","nodeType":"YulIdentifier","src":"1068:6:2"},{"kind":"number","nativeSrc":"1076:4:2","nodeType":"YulLiteral","src":"1076:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1064:3:2","nodeType":"YulIdentifier","src":"1064:3:2"},"nativeSrc":"1064:17:2","nodeType":"YulFunctionCall","src":"1064:17:2"},{"name":"nSlots","nativeSrc":"1083:6:2","nodeType":"YulIdentifier","src":"1083:6:2"}],"functionName":{"name":"mstore","nativeSrc":"1057:6:2","nodeType":"YulIdentifier","src":"1057:6:2"},"nativeSrc":"1057:33:2","nodeType":"YulFunctionCall","src":"1057:33:2"},"nativeSrc":"1057:33:2","nodeType":"YulExpressionStatement","src":"1057:33:2"},{"nativeSrc":"1171:27:2","nodeType":"YulAssignment","src":"1171:27:2","value":{"arguments":[{"name":"memptr","nativeSrc":"1185:6:2","nodeType":"YulIdentifier","src":"1185:6:2"},{"kind":"number","nativeSrc":"1193:4:2","nodeType":"YulLiteral","src":"1193:4:2","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"1181:3:2","nodeType":"YulIdentifier","src":"1181:3:2"},"nativeSrc":"1181:17:2","nodeType":"YulFunctionCall","src":"1181:17:2"},"variableNames":[{"name":"memptr","nativeSrc":"1171:6:2","nodeType":"YulIdentifier","src":"1171:6:2"}]},{"nativeSrc":"1211:30:2","nodeType":"YulVariableDeclaration","src":"1211:30:2","value":{"arguments":[{"name":"memptr","nativeSrc":"1226:6:2","nodeType":"YulIdentifier","src":"1226:6:2"},{"name":"length","nativeSrc":"1234:6:2","nodeType":"YulIdentifier","src":"1234:6:2"}],"functionName":{"name":"add","nativeSrc":"1222:3:2","nodeType":"YulIdentifier","src":"1222:3:2"},"nativeSrc":"1222:19:2","nodeType":"YulFunctionCall","src":"1222:19:2"},"variables":[{"name":"end","nativeSrc":"1215:3:2","nodeType":"YulTypedName","src":"1215:3:2","type":""}]},{"body":{"nativeSrc":"1266:208:2","nodeType":"YulBlock","src":"1266:208:2","statements":[{"expression":{"arguments":[{"name":"memptr","nativeSrc":"1291:6:2","nodeType":"YulIdentifier","src":"1291:6:2"},{"arguments":[{"name":"startSlot","nativeSrc":"1305:9:2","nodeType":"YulIdentifier","src":"1305:9:2"}],"functionName":{"name":"sload","nativeSrc":"1299:5:2","nodeType":"YulIdentifier","src":"1299:5:2"},"nativeSrc":"1299:16:2","nodeType":"YulFunctionCall","src":"1299:16:2"}],"functionName":{"name":"mstore","nativeSrc":"1284:6:2","nodeType":"YulIdentifier","src":"1284:6:2"},"nativeSrc":"1284:32:2","nodeType":"YulFunctionCall","src":"1284:32:2"},"nativeSrc":"1284:32:2","nodeType":"YulExpressionStatement","src":"1284:32:2"},{"nativeSrc":"1333:27:2","nodeType":"YulAssignment","src":"1333:27:2","value":{"arguments":[{"name":"memptr","nativeSrc":"1347:6:2","nodeType":"YulIdentifier","src":"1347:6:2"},{"kind":"number","nativeSrc":"1355:4:2","nodeType":"YulLiteral","src":"1355:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1343:3:2","nodeType":"YulIdentifier","src":"1343:3:2"},"nativeSrc":"1343:17:2","nodeType":"YulFunctionCall","src":"1343:17:2"},"variableNames":[{"name":"memptr","nativeSrc":"1333:6:2","nodeType":"YulIdentifier","src":"1333:6:2"}]},{"nativeSrc":"1377:30:2","nodeType":"YulAssignment","src":"1377:30:2","value":{"arguments":[{"name":"startSlot","nativeSrc":"1394:9:2","nodeType":"YulIdentifier","src":"1394:9:2"},{"kind":"number","nativeSrc":"1405:1:2","nodeType":"YulLiteral","src":"1405:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"1390:3:2","nodeType":"YulIdentifier","src":"1390:3:2"},"nativeSrc":"1390:17:2","nodeType":"YulFunctionCall","src":"1390:17:2"},"variableNames":[{"name":"startSlot","nativeSrc":"1377:9:2","nodeType":"YulIdentifier","src":"1377:9:2"}]},{"body":{"nativeSrc":"1451:9:2","nodeType":"YulBlock","src":"1451:9:2","statements":[{"nativeSrc":"1453:5:2","nodeType":"YulBreak","src":"1453:5:2"}]},"condition":{"arguments":[{"arguments":[{"name":"memptr","nativeSrc":"1437:6:2","nodeType":"YulIdentifier","src":"1437:6:2"},{"name":"end","nativeSrc":"1445:3:2","nodeType":"YulIdentifier","src":"1445:3:2"}],"functionName":{"name":"lt","nativeSrc":"1434:2:2","nodeType":"YulIdentifier","src":"1434:2:2"},"nativeSrc":"1434:15:2","nodeType":"YulFunctionCall","src":"1434:15:2"}],"functionName":{"name":"iszero","nativeSrc":"1427:6:2","nodeType":"YulIdentifier","src":"1427:6:2"},"nativeSrc":"1427:23:2","nodeType":"YulFunctionCall","src":"1427:23:2"},"nativeSrc":"1424:36:2","nodeType":"YulIf","src":"1424:36:2"}]},"condition":{"kind":"number","nativeSrc":"1261:1:2","nodeType":"YulLiteral","src":"1261:1:2","type":"","value":"1"},"nativeSrc":"1254:220:2","nodeType":"YulForLoop","post":{"nativeSrc":"1263:2:2","nodeType":"YulBlock","src":"1263:2:2","statements":[]},"pre":{"nativeSrc":"1258:2:2","nodeType":"YulBlock","src":"1258:2:2","statements":[]},"src":"1254:220:2"},{"expression":{"arguments":[{"name":"start","nativeSrc":"1494:5:2","nodeType":"YulIdentifier","src":"1494:5:2"},{"arguments":[{"name":"end","nativeSrc":"1505:3:2","nodeType":"YulIdentifier","src":"1505:3:2"},{"name":"start","nativeSrc":"1510:5:2","nodeType":"YulIdentifier","src":"1510:5:2"}],"functionName":{"name":"sub","nativeSrc":"1501:3:2","nodeType":"YulIdentifier","src":"1501:3:2"},"nativeSrc":"1501:15:2","nodeType":"YulFunctionCall","src":"1501:15:2"}],"functionName":{"name":"return","nativeSrc":"1487:6:2","nodeType":"YulIdentifier","src":"1487:6:2"},"nativeSrc":"1487:30:2","nodeType":"YulFunctionCall","src":"1487:30:2"},"nativeSrc":"1487:30:2","nodeType":"YulExpressionStatement","src":"1487:30:2"}]},"evmVersion":"cancun","externalReferences":[{"declaration":1311,"isOffset":false,"isSlot":false,"src":"1083:6:2","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"878:6:2","valueSize":1},{"declaration":1309,"isOffset":false,"isSlot":false,"src":"1305:9:2","valueSize":1},{"declaration":1309,"isOffset":false,"isSlot":false,"src":"1377:9:2","valueSize":1},{"declaration":1309,"isOffset":false,"isSlot":false,"src":"1394:9:2","valueSize":1}],"flags":["memory-safe"],"id":1317,"nodeType":"InlineAssembly","src":"656:871:2"}]},"documentation":{"id":1307,"nodeType":"StructuredDocumentation","src":"522:25:2","text":"@inheritdoc IExtsload"},"functionSelector":"35fd631a","id":1319,"implemented":true,"kind":"function","modifiers":[],"name":"extsload","nameLocation":"561:8:2","nodeType":"FunctionDefinition","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1309,"mutability":"mutable","name":"startSlot","nameLocation":"578:9:2","nodeType":"VariableDeclaration","scope":1319,"src":"570:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1308,"name":"bytes32","nodeType":"ElementaryTypeName","src":"570:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1311,"mutability":"mutable","name":"nSlots","nameLocation":"597:6:2","nodeType":"VariableDeclaration","scope":1319,"src":"589:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"589:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"569:35:2"},"returnParameters":{"id":1316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1319,"src":"628:16:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"628:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1314,"nodeType":"ArrayTypeName","src":"628:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"627:18:2"},"scope":1332,"src":"552:981:2","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[7223],"body":{"id":1330,"nodeType":"Block","src":"1654:952:2","statements":[{"AST":{"nativeSrc":"1689:911:2","nodeType":"YulBlock","src":"1689:911:2","statements":[{"nativeSrc":"1703:25:2","nodeType":"YulVariableDeclaration","src":"1703:25:2","value":{"arguments":[{"kind":"number","nativeSrc":"1723:4:2","nodeType":"YulLiteral","src":"1723:4:2","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"1717:5:2","nodeType":"YulIdentifier","src":"1717:5:2"},"nativeSrc":"1717:11:2","nodeType":"YulFunctionCall","src":"1717:11:2"},"variables":[{"name":"memptr","nativeSrc":"1707:6:2","nodeType":"YulTypedName","src":"1707:6:2","type":""}]},{"nativeSrc":"1741:19:2","nodeType":"YulVariableDeclaration","src":"1741:19:2","value":{"name":"memptr","nativeSrc":"1754:6:2","nodeType":"YulIdentifier","src":"1754:6:2"},"variables":[{"name":"start","nativeSrc":"1745:5:2","nodeType":"YulTypedName","src":"1745:5:2","type":""}]},{"expression":{"arguments":[{"name":"memptr","nativeSrc":"1859:6:2","nodeType":"YulIdentifier","src":"1859:6:2"},{"kind":"number","nativeSrc":"1867:4:2","nodeType":"YulLiteral","src":"1867:4:2","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"1852:6:2","nodeType":"YulIdentifier","src":"1852:6:2"},"nativeSrc":"1852:20:2","nodeType":"YulFunctionCall","src":"1852:20:2"},"nativeSrc":"1852:20:2","nodeType":"YulExpressionStatement","src":"1852:20:2"},{"expression":{"arguments":[{"arguments":[{"name":"memptr","nativeSrc":"1956:6:2","nodeType":"YulIdentifier","src":"1956:6:2"},{"kind":"number","nativeSrc":"1964:4:2","nodeType":"YulLiteral","src":"1964:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1952:3:2","nodeType":"YulIdentifier","src":"1952:3:2"},"nativeSrc":"1952:17:2","nodeType":"YulFunctionCall","src":"1952:17:2"},{"name":"slots.length","nativeSrc":"1971:12:2","nodeType":"YulIdentifier","src":"1971:12:2"}],"functionName":{"name":"mstore","nativeSrc":"1945:6:2","nodeType":"YulIdentifier","src":"1945:6:2"},"nativeSrc":"1945:39:2","nodeType":"YulFunctionCall","src":"1945:39:2"},"nativeSrc":"1945:39:2","nodeType":"YulExpressionStatement","src":"1945:39:2"},{"nativeSrc":"2071:27:2","nodeType":"YulAssignment","src":"2071:27:2","value":{"arguments":[{"name":"memptr","nativeSrc":"2085:6:2","nodeType":"YulIdentifier","src":"2085:6:2"},{"kind":"number","nativeSrc":"2093:4:2","nodeType":"YulLiteral","src":"2093:4:2","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2081:3:2","nodeType":"YulIdentifier","src":"2081:3:2"},"nativeSrc":"2081:17:2","nodeType":"YulFunctionCall","src":"2081:17:2"},"variableNames":[{"name":"memptr","nativeSrc":"2071:6:2","nodeType":"YulIdentifier","src":"2071:6:2"}]},{"nativeSrc":"2203:44:2","nodeType":"YulVariableDeclaration","src":"2203:44:2","value":{"arguments":[{"name":"memptr","nativeSrc":"2218:6:2","nodeType":"YulIdentifier","src":"2218:6:2"},{"arguments":[{"kind":"number","nativeSrc":"2230:1:2","nodeType":"YulLiteral","src":"2230:1:2","type":"","value":"5"},{"name":"slots.length","nativeSrc":"2233:12:2","nodeType":"YulIdentifier","src":"2233:12:2"}],"functionName":{"name":"shl","nativeSrc":"2226:3:2","nodeType":"YulIdentifier","src":"2226:3:2"},"nativeSrc":"2226:20:2","nodeType":"YulFunctionCall","src":"2226:20:2"}],"functionName":{"name":"add","nativeSrc":"2214:3:2","nodeType":"YulIdentifier","src":"2214:3:2"},"nativeSrc":"2214:33:2","nodeType":"YulFunctionCall","src":"2214:33:2"},"variables":[{"name":"end","nativeSrc":"2207:3:2","nodeType":"YulTypedName","src":"2207:3:2","type":""}]},{"nativeSrc":"2260:31:2","nodeType":"YulVariableDeclaration","src":"2260:31:2","value":{"name":"slots.offset","nativeSrc":"2279:12:2","nodeType":"YulIdentifier","src":"2279:12:2"},"variables":[{"name":"calldataptr","nativeSrc":"2264:11:2","nodeType":"YulTypedName","src":"2264:11:2","type":""}]},{"body":{"nativeSrc":"2316:231:2","nodeType":"YulBlock","src":"2316:231:2","statements":[{"expression":{"arguments":[{"name":"memptr","nativeSrc":"2341:6:2","nodeType":"YulIdentifier","src":"2341:6:2"},{"arguments":[{"arguments":[{"name":"calldataptr","nativeSrc":"2368:11:2","nodeType":"YulIdentifier","src":"2368:11:2"}],"functionName":{"name":"calldataload","nativeSrc":"2355:12:2","nodeType":"YulIdentifier","src":"2355:12:2"},"nativeSrc":"2355:25:2","nodeType":"YulFunctionCall","src":"2355:25:2"}],"functionName":{"name":"sload","nativeSrc":"2349:5:2","nodeType":"YulIdentifier","src":"2349:5:2"},"nativeSrc":"2349:32:2","nodeType":"YulFunctionCall","src":"2349:32:2"}],"functionName":{"name":"mstore","nativeSrc":"2334:6:2","nodeType":"YulIdentifier","src":"2334:6:2"},"nativeSrc":"2334:48:2","nodeType":"YulFunctionCall","src":"2334:48:2"},"nativeSrc":"2334:48:2","nodeType":"YulExpressionStatement","src":"2334:48:2"},{"nativeSrc":"2399:27:2","nodeType":"YulAssignment","src":"2399:27:2","value":{"arguments":[{"name":"memptr","nativeSrc":"2413:6:2","nodeType":"YulIdentifier","src":"2413:6:2"},{"kind":"number","nativeSrc":"2421:4:2","nodeType":"YulLiteral","src":"2421:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2409:3:2","nodeType":"YulIdentifier","src":"2409:3:2"},"nativeSrc":"2409:17:2","nodeType":"YulFunctionCall","src":"2409:17:2"},"variableNames":[{"name":"memptr","nativeSrc":"2399:6:2","nodeType":"YulIdentifier","src":"2399:6:2"}]},{"nativeSrc":"2443:37:2","nodeType":"YulAssignment","src":"2443:37:2","value":{"arguments":[{"name":"calldataptr","nativeSrc":"2462:11:2","nodeType":"YulIdentifier","src":"2462:11:2"},{"kind":"number","nativeSrc":"2475:4:2","nodeType":"YulLiteral","src":"2475:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2458:3:2","nodeType":"YulIdentifier","src":"2458:3:2"},"nativeSrc":"2458:22:2","nodeType":"YulFunctionCall","src":"2458:22:2"},"variableNames":[{"name":"calldataptr","nativeSrc":"2443:11:2","nodeType":"YulIdentifier","src":"2443:11:2"}]},{"body":{"nativeSrc":"2524:9:2","nodeType":"YulBlock","src":"2524:9:2","statements":[{"nativeSrc":"2526:5:2","nodeType":"YulBreak","src":"2526:5:2"}]},"condition":{"arguments":[{"arguments":[{"name":"memptr","nativeSrc":"2510:6:2","nodeType":"YulIdentifier","src":"2510:6:2"},{"name":"end","nativeSrc":"2518:3:2","nodeType":"YulIdentifier","src":"2518:3:2"}],"functionName":{"name":"lt","nativeSrc":"2507:2:2","nodeType":"YulIdentifier","src":"2507:2:2"},"nativeSrc":"2507:15:2","nodeType":"YulFunctionCall","src":"2507:15:2"}],"functionName":{"name":"iszero","nativeSrc":"2500:6:2","nodeType":"YulIdentifier","src":"2500:6:2"},"nativeSrc":"2500:23:2","nodeType":"YulFunctionCall","src":"2500:23:2"},"nativeSrc":"2497:36:2","nodeType":"YulIf","src":"2497:36:2"}]},"condition":{"kind":"number","nativeSrc":"2311:1:2","nodeType":"YulLiteral","src":"2311:1:2","type":"","value":"1"},"nativeSrc":"2304:243:2","nodeType":"YulForLoop","post":{"nativeSrc":"2313:2:2","nodeType":"YulBlock","src":"2313:2:2","statements":[]},"pre":{"nativeSrc":"2308:2:2","nodeType":"YulBlock","src":"2308:2:2","statements":[]},"src":"2304:243:2"},{"expression":{"arguments":[{"name":"start","nativeSrc":"2567:5:2","nodeType":"YulIdentifier","src":"2567:5:2"},{"arguments":[{"name":"end","nativeSrc":"2578:3:2","nodeType":"YulIdentifier","src":"2578:3:2"},{"name":"start","nativeSrc":"2583:5:2","nodeType":"YulIdentifier","src":"2583:5:2"}],"functionName":{"name":"sub","nativeSrc":"2574:3:2","nodeType":"YulIdentifier","src":"2574:3:2"},"nativeSrc":"2574:15:2","nodeType":"YulFunctionCall","src":"2574:15:2"}],"functionName":{"name":"return","nativeSrc":"2560:6:2","nodeType":"YulIdentifier","src":"2560:6:2"},"nativeSrc":"2560:30:2","nodeType":"YulFunctionCall","src":"2560:30:2"},"nativeSrc":"2560:30:2","nodeType":"YulExpressionStatement","src":"2560:30:2"}]},"evmVersion":"cancun","externalReferences":[{"declaration":1323,"isOffset":false,"isSlot":false,"src":"1971:12:2","suffix":"length","valueSize":1},{"declaration":1323,"isOffset":false,"isSlot":false,"src":"2233:12:2","suffix":"length","valueSize":1},{"declaration":1323,"isOffset":true,"isSlot":false,"src":"2279:12:2","suffix":"offset","valueSize":1}],"flags":["memory-safe"],"id":1329,"nodeType":"InlineAssembly","src":"1664:936:2"}]},"documentation":{"id":1320,"nodeType":"StructuredDocumentation","src":"1539:25:2","text":"@inheritdoc IExtsload"},"functionSelector":"dbd035ff","id":1331,"implemented":true,"kind":"function","modifiers":[],"name":"extsload","nameLocation":"1578:8:2","nodeType":"FunctionDefinition","parameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1323,"mutability":"mutable","name":"slots","nameLocation":"1606:5:2","nodeType":"VariableDeclaration","scope":1331,"src":"1587:24:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1587:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1322,"nodeType":"ArrayTypeName","src":"1587:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"1586:26:2"},"returnParameters":{"id":1328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1331,"src":"1636:16:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1636:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1326,"nodeType":"ArrayTypeName","src":"1636:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"1635:18:2"},"scope":1332,"src":"1569:1037:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1333,"src":"261:2347:2","usedErrors":[],"usedEvents":[]}],"src":"32:2577:2"},"id":2},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Exttload.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Exttload.sol","exportedSymbols":{"Exttload":[1362],"IExttload":[7246]},"id":1363,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1334,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:3"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExttload.sol","file":"./interfaces/IExttload.sol","id":1336,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1363,"sourceUnit":7247,"src":"58:53:3","symbolAliases":[{"foreign":{"id":1335,"name":"IExttload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"66:9:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1338,"name":"IExttload","nameLocations":["302:9:3"],"nodeType":"IdentifierPath","referencedDeclaration":7246,"src":"302:9:3"},"id":1339,"nodeType":"InheritanceSpecifier","src":"302:9:3"}],"canonicalName":"Exttload","contractDependencies":[],"contractKind":"contract","documentation":{"id":1337,"nodeType":"StructuredDocumentation","src":"113:159:3","text":"@notice Enables public transient storage access for efficient state retrieval by external contracts.\n https://eips.ethereum.org/EIPS/eip-2330#rationale"},"fullyImplemented":true,"id":1362,"linearizedBaseContracts":[1362,7246],"name":"Exttload","nameLocation":"290:8:3","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[7235],"body":{"id":1348,"nodeType":"Block","src":"412:115:3","statements":[{"AST":{"nativeSrc":"447:74:3","nodeType":"YulBlock","src":"447:74:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"468:1:3","nodeType":"YulLiteral","src":"468:1:3","type":"","value":"0"},{"arguments":[{"name":"slot","nativeSrc":"477:4:3","nodeType":"YulIdentifier","src":"477:4:3"}],"functionName":{"name":"tload","nativeSrc":"471:5:3","nodeType":"YulIdentifier","src":"471:5:3"},"nativeSrc":"471:11:3","nodeType":"YulFunctionCall","src":"471:11:3"}],"functionName":{"name":"mstore","nativeSrc":"461:6:3","nodeType":"YulIdentifier","src":"461:6:3"},"nativeSrc":"461:22:3","nodeType":"YulFunctionCall","src":"461:22:3"},"nativeSrc":"461:22:3","nodeType":"YulExpressionStatement","src":"461:22:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"503:1:3","nodeType":"YulLiteral","src":"503:1:3","type":"","value":"0"},{"kind":"number","nativeSrc":"506:4:3","nodeType":"YulLiteral","src":"506:4:3","type":"","value":"0x20"}],"functionName":{"name":"return","nativeSrc":"496:6:3","nodeType":"YulIdentifier","src":"496:6:3"},"nativeSrc":"496:15:3","nodeType":"YulFunctionCall","src":"496:15:3"},"nativeSrc":"496:15:3","nodeType":"YulExpressionStatement","src":"496:15:3"}]},"evmVersion":"cancun","externalReferences":[{"declaration":1342,"isOffset":false,"isSlot":false,"src":"477:4:3","valueSize":1}],"flags":["memory-safe"],"id":1347,"nodeType":"InlineAssembly","src":"422:99:3"}]},"documentation":{"id":1340,"nodeType":"StructuredDocumentation","src":"318:25:3","text":"@inheritdoc IExttload"},"functionSelector":"f135baaa","id":1349,"implemented":true,"kind":"function","modifiers":[],"name":"exttload","nameLocation":"357:8:3","nodeType":"FunctionDefinition","parameters":{"id":1343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1342,"mutability":"mutable","name":"slot","nameLocation":"374:4:3","nodeType":"VariableDeclaration","scope":1349,"src":"366:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"366:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"365:14:3"},"returnParameters":{"id":1346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1349,"src":"403:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"403:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"402:9:3"},"scope":1362,"src":"348:179:3","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[7245],"body":{"id":1360,"nodeType":"Block","src":"648:952:3","statements":[{"AST":{"nativeSrc":"683:911:3","nodeType":"YulBlock","src":"683:911:3","statements":[{"nativeSrc":"697:25:3","nodeType":"YulVariableDeclaration","src":"697:25:3","value":{"arguments":[{"kind":"number","nativeSrc":"717:4:3","nodeType":"YulLiteral","src":"717:4:3","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"711:5:3","nodeType":"YulIdentifier","src":"711:5:3"},"nativeSrc":"711:11:3","nodeType":"YulFunctionCall","src":"711:11:3"},"variables":[{"name":"memptr","nativeSrc":"701:6:3","nodeType":"YulTypedName","src":"701:6:3","type":""}]},{"nativeSrc":"735:19:3","nodeType":"YulVariableDeclaration","src":"735:19:3","value":{"name":"memptr","nativeSrc":"748:6:3","nodeType":"YulIdentifier","src":"748:6:3"},"variables":[{"name":"start","nativeSrc":"739:5:3","nodeType":"YulTypedName","src":"739:5:3","type":""}]},{"expression":{"arguments":[{"name":"memptr","nativeSrc":"853:6:3","nodeType":"YulIdentifier","src":"853:6:3"},{"kind":"number","nativeSrc":"861:4:3","nodeType":"YulLiteral","src":"861:4:3","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"846:6:3","nodeType":"YulIdentifier","src":"846:6:3"},"nativeSrc":"846:20:3","nodeType":"YulFunctionCall","src":"846:20:3"},"nativeSrc":"846:20:3","nodeType":"YulExpressionStatement","src":"846:20:3"},{"expression":{"arguments":[{"arguments":[{"name":"memptr","nativeSrc":"950:6:3","nodeType":"YulIdentifier","src":"950:6:3"},{"kind":"number","nativeSrc":"958:4:3","nodeType":"YulLiteral","src":"958:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"946:3:3","nodeType":"YulIdentifier","src":"946:3:3"},"nativeSrc":"946:17:3","nodeType":"YulFunctionCall","src":"946:17:3"},{"name":"slots.length","nativeSrc":"965:12:3","nodeType":"YulIdentifier","src":"965:12:3"}],"functionName":{"name":"mstore","nativeSrc":"939:6:3","nodeType":"YulIdentifier","src":"939:6:3"},"nativeSrc":"939:39:3","nodeType":"YulFunctionCall","src":"939:39:3"},"nativeSrc":"939:39:3","nodeType":"YulExpressionStatement","src":"939:39:3"},{"nativeSrc":"1065:27:3","nodeType":"YulAssignment","src":"1065:27:3","value":{"arguments":[{"name":"memptr","nativeSrc":"1079:6:3","nodeType":"YulIdentifier","src":"1079:6:3"},{"kind":"number","nativeSrc":"1087:4:3","nodeType":"YulLiteral","src":"1087:4:3","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"1075:3:3","nodeType":"YulIdentifier","src":"1075:3:3"},"nativeSrc":"1075:17:3","nodeType":"YulFunctionCall","src":"1075:17:3"},"variableNames":[{"name":"memptr","nativeSrc":"1065:6:3","nodeType":"YulIdentifier","src":"1065:6:3"}]},{"nativeSrc":"1197:44:3","nodeType":"YulVariableDeclaration","src":"1197:44:3","value":{"arguments":[{"name":"memptr","nativeSrc":"1212:6:3","nodeType":"YulIdentifier","src":"1212:6:3"},{"arguments":[{"kind":"number","nativeSrc":"1224:1:3","nodeType":"YulLiteral","src":"1224:1:3","type":"","value":"5"},{"name":"slots.length","nativeSrc":"1227:12:3","nodeType":"YulIdentifier","src":"1227:12:3"}],"functionName":{"name":"shl","nativeSrc":"1220:3:3","nodeType":"YulIdentifier","src":"1220:3:3"},"nativeSrc":"1220:20:3","nodeType":"YulFunctionCall","src":"1220:20:3"}],"functionName":{"name":"add","nativeSrc":"1208:3:3","nodeType":"YulIdentifier","src":"1208:3:3"},"nativeSrc":"1208:33:3","nodeType":"YulFunctionCall","src":"1208:33:3"},"variables":[{"name":"end","nativeSrc":"1201:3:3","nodeType":"YulTypedName","src":"1201:3:3","type":""}]},{"nativeSrc":"1254:31:3","nodeType":"YulVariableDeclaration","src":"1254:31:3","value":{"name":"slots.offset","nativeSrc":"1273:12:3","nodeType":"YulIdentifier","src":"1273:12:3"},"variables":[{"name":"calldataptr","nativeSrc":"1258:11:3","nodeType":"YulTypedName","src":"1258:11:3","type":""}]},{"body":{"nativeSrc":"1310:231:3","nodeType":"YulBlock","src":"1310:231:3","statements":[{"expression":{"arguments":[{"name":"memptr","nativeSrc":"1335:6:3","nodeType":"YulIdentifier","src":"1335:6:3"},{"arguments":[{"arguments":[{"name":"calldataptr","nativeSrc":"1362:11:3","nodeType":"YulIdentifier","src":"1362:11:3"}],"functionName":{"name":"calldataload","nativeSrc":"1349:12:3","nodeType":"YulIdentifier","src":"1349:12:3"},"nativeSrc":"1349:25:3","nodeType":"YulFunctionCall","src":"1349:25:3"}],"functionName":{"name":"tload","nativeSrc":"1343:5:3","nodeType":"YulIdentifier","src":"1343:5:3"},"nativeSrc":"1343:32:3","nodeType":"YulFunctionCall","src":"1343:32:3"}],"functionName":{"name":"mstore","nativeSrc":"1328:6:3","nodeType":"YulIdentifier","src":"1328:6:3"},"nativeSrc":"1328:48:3","nodeType":"YulFunctionCall","src":"1328:48:3"},"nativeSrc":"1328:48:3","nodeType":"YulExpressionStatement","src":"1328:48:3"},{"nativeSrc":"1393:27:3","nodeType":"YulAssignment","src":"1393:27:3","value":{"arguments":[{"name":"memptr","nativeSrc":"1407:6:3","nodeType":"YulIdentifier","src":"1407:6:3"},{"kind":"number","nativeSrc":"1415:4:3","nodeType":"YulLiteral","src":"1415:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1403:3:3","nodeType":"YulIdentifier","src":"1403:3:3"},"nativeSrc":"1403:17:3","nodeType":"YulFunctionCall","src":"1403:17:3"},"variableNames":[{"name":"memptr","nativeSrc":"1393:6:3","nodeType":"YulIdentifier","src":"1393:6:3"}]},{"nativeSrc":"1437:37:3","nodeType":"YulAssignment","src":"1437:37:3","value":{"arguments":[{"name":"calldataptr","nativeSrc":"1456:11:3","nodeType":"YulIdentifier","src":"1456:11:3"},{"kind":"number","nativeSrc":"1469:4:3","nodeType":"YulLiteral","src":"1469:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1452:3:3","nodeType":"YulIdentifier","src":"1452:3:3"},"nativeSrc":"1452:22:3","nodeType":"YulFunctionCall","src":"1452:22:3"},"variableNames":[{"name":"calldataptr","nativeSrc":"1437:11:3","nodeType":"YulIdentifier","src":"1437:11:3"}]},{"body":{"nativeSrc":"1518:9:3","nodeType":"YulBlock","src":"1518:9:3","statements":[{"nativeSrc":"1520:5:3","nodeType":"YulBreak","src":"1520:5:3"}]},"condition":{"arguments":[{"arguments":[{"name":"memptr","nativeSrc":"1504:6:3","nodeType":"YulIdentifier","src":"1504:6:3"},{"name":"end","nativeSrc":"1512:3:3","nodeType":"YulIdentifier","src":"1512:3:3"}],"functionName":{"name":"lt","nativeSrc":"1501:2:3","nodeType":"YulIdentifier","src":"1501:2:3"},"nativeSrc":"1501:15:3","nodeType":"YulFunctionCall","src":"1501:15:3"}],"functionName":{"name":"iszero","nativeSrc":"1494:6:3","nodeType":"YulIdentifier","src":"1494:6:3"},"nativeSrc":"1494:23:3","nodeType":"YulFunctionCall","src":"1494:23:3"},"nativeSrc":"1491:36:3","nodeType":"YulIf","src":"1491:36:3"}]},"condition":{"kind":"number","nativeSrc":"1305:1:3","nodeType":"YulLiteral","src":"1305:1:3","type":"","value":"1"},"nativeSrc":"1298:243:3","nodeType":"YulForLoop","post":{"nativeSrc":"1307:2:3","nodeType":"YulBlock","src":"1307:2:3","statements":[]},"pre":{"nativeSrc":"1302:2:3","nodeType":"YulBlock","src":"1302:2:3","statements":[]},"src":"1298:243:3"},{"expression":{"arguments":[{"name":"start","nativeSrc":"1561:5:3","nodeType":"YulIdentifier","src":"1561:5:3"},{"arguments":[{"name":"end","nativeSrc":"1572:3:3","nodeType":"YulIdentifier","src":"1572:3:3"},{"name":"start","nativeSrc":"1577:5:3","nodeType":"YulIdentifier","src":"1577:5:3"}],"functionName":{"name":"sub","nativeSrc":"1568:3:3","nodeType":"YulIdentifier","src":"1568:3:3"},"nativeSrc":"1568:15:3","nodeType":"YulFunctionCall","src":"1568:15:3"}],"functionName":{"name":"return","nativeSrc":"1554:6:3","nodeType":"YulIdentifier","src":"1554:6:3"},"nativeSrc":"1554:30:3","nodeType":"YulFunctionCall","src":"1554:30:3"},"nativeSrc":"1554:30:3","nodeType":"YulExpressionStatement","src":"1554:30:3"}]},"evmVersion":"cancun","externalReferences":[{"declaration":1353,"isOffset":false,"isSlot":false,"src":"1227:12:3","suffix":"length","valueSize":1},{"declaration":1353,"isOffset":false,"isSlot":false,"src":"965:12:3","suffix":"length","valueSize":1},{"declaration":1353,"isOffset":true,"isSlot":false,"src":"1273:12:3","suffix":"offset","valueSize":1}],"flags":["memory-safe"],"id":1359,"nodeType":"InlineAssembly","src":"658:936:3"}]},"documentation":{"id":1350,"nodeType":"StructuredDocumentation","src":"533:25:3","text":"@inheritdoc IExttload"},"functionSelector":"9bf6645f","id":1361,"implemented":true,"kind":"function","modifiers":[],"name":"exttload","nameLocation":"572:8:3","nodeType":"FunctionDefinition","parameters":{"id":1354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1353,"mutability":"mutable","name":"slots","nameLocation":"600:5:3","nodeType":"VariableDeclaration","scope":1361,"src":"581:24:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"581:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1352,"nodeType":"ArrayTypeName","src":"581:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"580:26:3"},"returnParameters":{"id":1358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1357,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1361,"src":"630:16:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"630:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1356,"nodeType":"ArrayTypeName","src":"630:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"629:18:3"},"scope":1362,"src":"563:1037:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1363,"src":"272:1330:3","usedErrors":[],"usedEvents":[]}],"src":"32:1571:3"},"id":3},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/NoDelegateCall.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/NoDelegateCall.sol","exportedSymbols":{"CustomRevert":[2358],"NoDelegateCall":[1414]},"id":1415,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1364,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:4"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./libraries/CustomRevert.sol","id":1366,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1415,"sourceUnit":2359,"src":"57:58:4","symbolAliases":[{"foreign":{"id":1365,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"65:12:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"NoDelegateCall","contractDependencies":[],"contractKind":"contract","documentation":{"id":1367,"nodeType":"StructuredDocumentation","src":"117:157:4","text":"@title Prevents delegatecall to a contract\n @notice Base contract that provides a modifier for preventing delegatecall to methods in a child contract"},"fullyImplemented":true,"id":1414,"linearizedBaseContracts":[1414],"name":"NoDelegateCall","nameLocation":"292:14:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1370,"libraryName":{"id":1368,"name":"CustomRevert","nameLocations":["319:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"319:12:4"},"nodeType":"UsingForDirective","src":"313:30:4","typeName":{"id":1369,"name":"bytes4","nodeType":"ElementaryTypeName","src":"336:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"errorSelector":"0d89438e","id":1372,"name":"DelegateCallNotAllowed","nameLocation":"355:22:4","nodeType":"ErrorDefinition","parameters":{"id":1371,"nodeType":"ParameterList","parameters":[],"src":"377:2:4"},"src":"349:31:4"},{"constant":false,"documentation":{"id":1373,"nodeType":"StructuredDocumentation","src":"386:46:4","text":"@dev The original address of this contract"},"id":1375,"mutability":"immutable","name":"original","nameLocation":"463:8:4","nodeType":"VariableDeclaration","scope":1414,"src":"437:34:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1374,"name":"address","nodeType":"ElementaryTypeName","src":"437:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":1385,"nodeType":"Block","src":"492:239:4","statements":[{"expression":{"id":1383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1378,"name":"original","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1375,"src":"700:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1381,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"719:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_NoDelegateCall_$1414","typeString":"contract NoDelegateCall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NoDelegateCall_$1414","typeString":"contract NoDelegateCall"}],"id":1380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"711:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1379,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:4","typeDescriptions":{}}},"id":1382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"711:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"700:24:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1384,"nodeType":"ExpressionStatement","src":"700:24:4"}]},"id":1386,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1376,"nodeType":"ParameterList","parameters":[],"src":"489:2:4"},"returnParameters":{"id":1377,"nodeType":"ParameterList","parameters":[],"src":"492:0:4"},"scope":1414,"src":"478:253:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1404,"nodeType":"Block","src":"1008:92:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1392,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1030:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_NoDelegateCall_$1414","typeString":"contract NoDelegateCall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NoDelegateCall_$1414","typeString":"contract NoDelegateCall"}],"id":1391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1022:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1390,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:4","typeDescriptions":{}}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1022:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1394,"name":"original","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1375,"src":"1039:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1022:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1403,"nodeType":"IfStatement","src":"1018:75:4","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1396,"name":"DelegateCallNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1372,"src":"1049:22:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1072:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1049:31:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1081:10:4","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"1049:42:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1049:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1402,"nodeType":"ExpressionStatement","src":"1049:44:4"}}]},"documentation":{"id":1387,"nodeType":"StructuredDocumentation","src":"737:221:4","text":"@dev Private method is used instead of inlining into modifier because modifiers are copied into each method,\n     and the use of immutable means the address bytes are copied in every place the modifier is used."},"id":1405,"implemented":true,"kind":"function","modifiers":[],"name":"checkNotDelegateCall","nameLocation":"972:20:4","nodeType":"FunctionDefinition","parameters":{"id":1388,"nodeType":"ParameterList","parameters":[],"src":"992:2:4"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[],"src":"1008:0:4"},"scope":1414,"src":"963:137:4","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":1412,"nodeType":"Block","src":"1195:50:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1408,"name":"checkNotDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"1205:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1205:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1410,"nodeType":"ExpressionStatement","src":"1205:22:4"},{"id":1411,"nodeType":"PlaceholderStatement","src":"1237:1:4"}]},"documentation":{"id":1406,"nodeType":"StructuredDocumentation","src":"1106:58:4","text":"@notice Prevents delegatecall into the modified method"},"id":1413,"name":"noDelegateCall","nameLocation":"1178:14:4","nodeType":"ModifierDefinition","parameters":{"id":1407,"nodeType":"ParameterList","parameters":[],"src":"1192:2:4"},"src":"1169:76:4","virtual":false,"visibility":"internal"}],"scope":1415,"src":"274:973:4","usedErrors":[1372],"usedEvents":[]}],"src":"32:1216:4"},"id":4},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/PoolManager.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/PoolManager.sol","exportedSymbols":{"BalanceDelta":[6311],"BalanceDeltaLibrary":[6469],"BeforeSwapDelta":[6473],"Currency":[6525],"CurrencyDelta":[2204],"CurrencyLibrary":[6819],"CurrencyReserves":[2252],"CustomRevert":[2358],"ERC6909Claims":[1289],"Extsload":[1332],"Exttload":[1362],"Hooks":[3530],"IHooks":[1840],"IPoolManager":[2123],"IUnlockCallback":[2135],"LPFeeLibrary":[3679],"Lock":[3703],"ModifyLiquidityParams":[6887],"NoDelegateCall":[1414],"NonzeroDeltaCount":[3728],"Pool":[5409],"PoolId":[6825],"PoolKey":[6871],"PoolManager":[1216],"Position":[5575],"ProtocolFees":[1641],"SafeCast":[5751],"SwapParams":[6898],"TickMath":[6305]},"id":1217,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","0.8",".26"],"nodeType":"PragmaDirective","src":"37:23:5"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Hooks.sol","file":"./libraries/Hooks.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":3531,"src":"62:44:5","symbolAliases":[{"foreign":{"id":2,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"70:5:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Pool.sol","file":"./libraries/Pool.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":5410,"src":"107:42:5","symbolAliases":[{"foreign":{"id":4,"name":"Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"115:4:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol","file":"./libraries/SafeCast.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":5752,"src":"150:50:5","symbolAliases":[{"foreign":{"id":6,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"158:8:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Position.sol","file":"./libraries/Position.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":5576,"src":"201:50:5","symbolAliases":[{"foreign":{"id":8,"name":"Position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"209:8:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LPFeeLibrary.sol","file":"./libraries/LPFeeLibrary.sol","id":11,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":3680,"src":"252:58:5","symbolAliases":[{"foreign":{"id":10,"name":"LPFeeLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"260:12:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","file":"./types/Currency.sol","id":14,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":6820,"src":"311:63:5","symbolAliases":[{"foreign":{"id":12,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"319:8:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":13,"name":"CurrencyLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6819,"src":"329:15:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"./types/PoolKey.sol","id":16,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":6872,"src":"375:44:5","symbolAliases":[{"foreign":{"id":15,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"383:7:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickMath.sol","file":"./libraries/TickMath.sol","id":18,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":6306,"src":"420:50:5","symbolAliases":[{"foreign":{"id":17,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"428:8:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/NoDelegateCall.sol","file":"./NoDelegateCall.sol","id":20,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":1415,"src":"471:52:5","symbolAliases":[{"foreign":{"id":19,"name":"NoDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"479:14:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IHooks.sol","file":"./interfaces/IHooks.sol","id":22,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":1841,"src":"524:47:5","symbolAliases":[{"foreign":{"id":21,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"532:6:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IPoolManager.sol","file":"./interfaces/IPoolManager.sol","id":24,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":2124,"src":"572:59:5","symbolAliases":[{"foreign":{"id":23,"name":"IPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2123,"src":"580:12:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/callback/IUnlockCallback.sol","file":"./interfaces/callback/IUnlockCallback.sol","id":26,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":2136,"src":"632:74:5","symbolAliases":[{"foreign":{"id":25,"name":"IUnlockCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2135,"src":"640:15:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ProtocolFees.sol","file":"./ProtocolFees.sol","id":28,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":1642,"src":"707:48:5","symbolAliases":[{"foreign":{"id":27,"name":"ProtocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"715:12:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ERC6909Claims.sol","file":"./ERC6909Claims.sol","id":30,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":1290,"src":"756:50:5","symbolAliases":[{"foreign":{"id":29,"name":"ERC6909Claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"764:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol","file":"./types/PoolId.sol","id":32,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":6840,"src":"807:42:5","symbolAliases":[{"foreign":{"id":31,"name":"PoolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6825,"src":"815:6:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolOperation.sol","file":"./types/PoolOperation.sol","id":35,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":6899,"src":"850:76:5","symbolAliases":[{"foreign":{"id":33,"name":"ModifyLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6887,"src":"858:21:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":34,"name":"SwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"881:10:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol","file":"./types/BalanceDelta.sol","id":38,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":6470,"src":"927:75:5","symbolAliases":[{"foreign":{"id":36,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"935:12:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":37,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"949:19:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BeforeSwapDelta.sol","file":"./types/BeforeSwapDelta.sol","id":40,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":6518,"src":"1003:60:5","symbolAliases":[{"foreign":{"id":39,"name":"BeforeSwapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"1011:15:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Lock.sol","file":"./libraries/Lock.sol","id":42,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":3704,"src":"1064:42:5","symbolAliases":[{"foreign":{"id":41,"name":"Lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3703,"src":"1072:4:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyDelta.sol","file":"./libraries/CurrencyDelta.sol","id":44,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":2205,"src":"1107:60:5","symbolAliases":[{"foreign":{"id":43,"name":"CurrencyDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"1115:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/NonzeroDeltaCount.sol","file":"./libraries/NonzeroDeltaCount.sol","id":46,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":3729,"src":"1168:68:5","symbolAliases":[{"foreign":{"id":45,"name":"NonzeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"1176:17:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyReserves.sol","file":"./libraries/CurrencyReserves.sol","id":48,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":2253,"src":"1237:66:5","symbolAliases":[{"foreign":{"id":47,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"1245:16:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Extsload.sol","file":"./Extsload.sol","id":50,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":1333,"src":"1304:40:5","symbolAliases":[{"foreign":{"id":49,"name":"Extsload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"1312:8:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/Exttload.sol","file":"./Exttload.sol","id":52,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":1363,"src":"1345:40:5","symbolAliases":[{"foreign":{"id":51,"name":"Exttload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"1353:8:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./libraries/CustomRevert.sol","id":54,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1217,"sourceUnit":2359,"src":"1386:58:5","symbolAliases":[{"foreign":{"id":53,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"1394:12:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":56,"name":"IPoolManager","nameLocations":["4815:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":2123,"src":"4815:12:5"},"id":57,"nodeType":"InheritanceSpecifier","src":"4815:12:5"},{"baseName":{"id":58,"name":"ProtocolFees","nameLocations":["4829:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"4829:12:5"},"id":59,"nodeType":"InheritanceSpecifier","src":"4829:12:5"},{"baseName":{"id":60,"name":"NoDelegateCall","nameLocations":["4843:14:5"],"nodeType":"IdentifierPath","referencedDeclaration":1414,"src":"4843:14:5"},"id":61,"nodeType":"InheritanceSpecifier","src":"4843:14:5"},{"baseName":{"id":62,"name":"ERC6909Claims","nameLocations":["4859:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":1289,"src":"4859:13:5"},"id":63,"nodeType":"InheritanceSpecifier","src":"4859:13:5"},{"baseName":{"id":64,"name":"Extsload","nameLocations":["4874:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":1332,"src":"4874:8:5"},"id":65,"nodeType":"InheritanceSpecifier","src":"4874:8:5"},{"baseName":{"id":66,"name":"Exttload","nameLocations":["4884:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":1362,"src":"4884:8:5"},"id":67,"nodeType":"InheritanceSpecifier","src":"4884:8:5"}],"canonicalName":"PoolManager","contractDependencies":[],"contractKind":"contract","documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"4726:65:5","text":"@title PoolManager\n @notice Holds the state for all pools"},"fullyImplemented":true,"id":1216,"linearizedBaseContracts":[1216,1362,1332,1289,7191,1414,1641,7455,2123,7246,7224,7569,7323],"name":"PoolManager","nameLocation":"4800:11:5","nodeType":"ContractDefinition","nodes":[{"global":false,"id":69,"libraryName":{"id":68,"name":"SafeCast","nameLocations":["4905:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":5751,"src":"4905:8:5"},"nodeType":"UsingForDirective","src":"4899:21:5"},{"global":false,"id":71,"libraryName":{"id":70,"name":"Pool","nameLocations":["4931:4:5"],"nodeType":"IdentifierPath","referencedDeclaration":5409,"src":"4931:4:5"},"nodeType":"UsingForDirective","src":"4925:17:5"},{"global":false,"id":75,"libraryName":{"id":72,"name":"Hooks","nameLocations":["4953:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":3530,"src":"4953:5:5"},"nodeType":"UsingForDirective","src":"4947:23:5","typeName":{"id":74,"nodeType":"UserDefinedTypeName","pathNode":{"id":73,"name":"IHooks","nameLocations":["4963:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"4963:6:5"},"referencedDeclaration":1840,"src":"4963:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}},{"global":false,"id":79,"libraryName":{"id":76,"name":"CurrencyDelta","nameLocations":["4981:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":2204,"src":"4981:13:5"},"nodeType":"UsingForDirective","src":"4975:33:5","typeName":{"id":78,"nodeType":"UserDefinedTypeName","pathNode":{"id":77,"name":"Currency","nameLocations":["4999:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"4999:8:5"},"referencedDeclaration":6525,"src":"4999:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}},{"global":false,"id":82,"libraryName":{"id":80,"name":"LPFeeLibrary","nameLocations":["5019:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":3679,"src":"5019:12:5"},"nodeType":"UsingForDirective","src":"5013:30:5","typeName":{"id":81,"name":"uint24","nodeType":"ElementaryTypeName","src":"5036:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}},{"global":false,"id":86,"libraryName":{"id":83,"name":"CurrencyReserves","nameLocations":["5054:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":2252,"src":"5054:16:5"},"nodeType":"UsingForDirective","src":"5048:36:5","typeName":{"id":85,"nodeType":"UserDefinedTypeName","pathNode":{"id":84,"name":"Currency","nameLocations":["5075:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"5075:8:5"},"referencedDeclaration":6525,"src":"5075:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}},{"global":false,"id":89,"libraryName":{"id":87,"name":"CustomRevert","nameLocations":["5095:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"5095:12:5"},"nodeType":"UsingForDirective","src":"5089:30:5","typeName":{"id":88,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5112:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"constant":true,"id":93,"mutability":"constant","name":"MAX_TICK_SPACING","nameLocation":"5148:16:5","nodeType":"VariableDeclaration","scope":1216,"src":"5125:67:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":90,"name":"int24","nodeType":"ElementaryTypeName","src":"5125:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"expression":{"id":91,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"5167:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":92,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5176:16:5","memberName":"MAX_TICK_SPACING","nodeType":"MemberAccess","referencedDeclaration":5792,"src":"5167:25:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"private"},{"constant":true,"id":97,"mutability":"constant","name":"MIN_TICK_SPACING","nameLocation":"5222:16:5","nodeType":"VariableDeclaration","scope":1216,"src":"5199:67:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":94,"name":"int24","nodeType":"ElementaryTypeName","src":"5199:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"expression":{"id":95,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"5241:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":96,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5250:16:5","memberName":"MIN_TICK_SPACING","nodeType":"MemberAccess","referencedDeclaration":5784,"src":"5241:25:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"private"},{"constant":false,"id":103,"mutability":"mutable","name":"_pools","nameLocation":"5315:6:5","nodeType":"VariableDeclaration","scope":1216,"src":"5273:48:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_PoolId_$6825_$_t_struct$_State_$3870_storage_$","typeString":"mapping(PoolId => struct Pool.State)"},"typeName":{"id":102,"keyName":"id","keyNameLocation":"5288:2:5","keyType":{"id":99,"nodeType":"UserDefinedTypeName","pathNode":{"id":98,"name":"PoolId","nameLocations":["5281:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"5281:6:5"},"referencedDeclaration":6825,"src":"5281:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"nodeType":"Mapping","src":"5273:32:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_PoolId_$6825_$_t_struct$_State_$3870_storage_$","typeString":"mapping(PoolId => struct Pool.State)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":101,"nodeType":"UserDefinedTypeName","pathNode":{"id":100,"name":"Pool.State","nameLocations":["5294:4:5","5299:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"5294:10:5"},"referencedDeclaration":3870,"src":"5294:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}}},"visibility":"internal"},{"body":{"id":119,"nodeType":"Block","src":"5415:87:5","statements":[{"condition":{"id":109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5429:18:5","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":106,"name":"Lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3703,"src":"5430:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Lock_$3703_$","typeString":"type(library Lock)"}},"id":107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5435:10:5","memberName":"isUnlocked","nodeType":"MemberAccess","referencedDeclaration":3702,"src":"5430:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5430:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":117,"nodeType":"IfStatement","src":"5425:59:5","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":110,"name":"ManagerLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1884,"src":"5449:13:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5463:8:5","memberName":"selector","nodeType":"MemberAccess","src":"5449:22:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5472:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"5449:33:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5449:35:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116,"nodeType":"ExpressionStatement","src":"5449:35:5"}},{"id":118,"nodeType":"PlaceholderStatement","src":"5494:1:5"}]},"documentation":{"id":104,"nodeType":"StructuredDocumentation","src":"5328:54:5","text":"@notice This will revert if the contract is locked"},"id":120,"name":"onlyWhenUnlocked","nameLocation":"5396:16:5","nodeType":"ModifierDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"5412:2:5"},"src":"5387:115:5","virtual":false,"visibility":"internal"},{"body":{"id":128,"nodeType":"Block","src":"5569:2:5","statements":[]},"id":129,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":125,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"5555:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":126,"kind":"baseConstructorSpecifier","modifierName":{"id":124,"name":"ProtocolFees","nameLocations":["5542:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"5542:12:5"},"nodeType":"ModifierInvocation","src":"5542:26:5"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":122,"mutability":"mutable","name":"initialOwner","nameLocation":"5528:12:5","nodeType":"VariableDeclaration","scope":129,"src":"5520:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121,"name":"address","nodeType":"ElementaryTypeName","src":"5520:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5519:22:5"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"5569:0:5"},"scope":1216,"src":"5508:63:5","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1992],"body":{"id":182,"nodeType":"Block","src":"5695:383:5","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":138,"name":"Lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3703,"src":"5709:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Lock_$3703_$","typeString":"type(library Lock)"}},"id":139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5714:10:5","memberName":"isUnlocked","nodeType":"MemberAccess","referencedDeclaration":3702,"src":"5709:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5709:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":148,"nodeType":"IfStatement","src":"5705:60:5","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":141,"name":"AlreadyUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1881,"src":"5728:15:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5744:8:5","memberName":"selector","nodeType":"MemberAccess","src":"5728:24:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5753:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"5728:35:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5728:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":147,"nodeType":"ExpressionStatement","src":"5728:37:5"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":149,"name":"Lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3703,"src":"5776:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Lock_$3703_$","typeString":"type(library Lock)"}},"id":151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5781:6:5","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":3690,"src":"5776:11:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5776:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":153,"nodeType":"ExpressionStatement","src":"5776:13:5"},{"expression":{"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":154,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"5907:6:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":160,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"5959:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"expression":{"id":156,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5932:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5936:6:5","memberName":"sender","nodeType":"MemberAccess","src":"5932:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":155,"name":"IUnlockCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2135,"src":"5916:15:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUnlockCallback_$2135_$","typeString":"type(contract IUnlockCallback)"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUnlockCallback_$2135","typeString":"contract IUnlockCallback"}},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5944:14:5","memberName":"unlockCallback","nodeType":"MemberAccess","referencedDeclaration":2134,"src":"5916:42:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:48:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5907:57:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":163,"nodeType":"ExpressionStatement","src":"5907:57:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":164,"name":"NonzeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"5979:17:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_NonzeroDeltaCount_$3728_$","typeString":"type(library NonzeroDeltaCount)"}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5997:4:5","memberName":"read","nodeType":"MemberAccess","referencedDeclaration":3716,"src":"5979:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5979:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6007:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5979:29:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":176,"nodeType":"IfStatement","src":"5975:75:5","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":169,"name":"CurrencyNotSettled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1875,"src":"6010:18:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6029:8:5","memberName":"selector","nodeType":"MemberAccess","src":"6010:27:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6038:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"6010:38:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6010:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":175,"nodeType":"ExpressionStatement","src":"6010:40:5"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":177,"name":"Lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3703,"src":"6060:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Lock_$3703_$","typeString":"type(library Lock)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6065:4:5","memberName":"lock","nodeType":"MemberAccess","referencedDeclaration":3695,"src":"6060:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6060:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":181,"nodeType":"ExpressionStatement","src":"6060:11:5"}]},"documentation":{"id":130,"nodeType":"StructuredDocumentation","src":"5577:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"48c89491","id":183,"implemented":true,"kind":"function","modifiers":[],"name":"unlock","nameLocation":"5619:6:5","nodeType":"FunctionDefinition","overrides":{"id":134,"nodeType":"OverrideSpecifier","overrides":[],"src":"5656:8:5"},"parameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"data","nameLocation":"5641:4:5","nodeType":"VariableDeclaration","scope":183,"src":"5626:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":131,"name":"bytes","nodeType":"ElementaryTypeName","src":"5626:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5625:21:5"},"returnParameters":{"id":137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":136,"mutability":"mutable","name":"result","nameLocation":"5687:6:5","nodeType":"VariableDeclaration","scope":183,"src":"5674:19:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135,"name":"bytes","nodeType":"ElementaryTypeName","src":"5674:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5673:21:5"},"scope":1216,"src":"5610:468:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2003],"body":{"id":329,"nodeType":"Block","src":"6224:1338:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":196,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6341:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6345:11:5","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":6866,"src":"6341:15:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":198,"name":"MAX_TICK_SPACING","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"6359:16:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6341:34:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":209,"nodeType":"IfStatement","src":"6337:96:5","trueBody":{"expression":{"arguments":[{"expression":{"id":205,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6417:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6421:11:5","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":6866,"src":"6417:15:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":200,"name":"TickSpacingTooLarge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1889,"src":"6377:19:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$returns$_t_error_$","typeString":"function (int24) pure returns (error)"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:8:5","memberName":"selector","nodeType":"MemberAccess","src":"6377:28:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2294,"src":"6377:39:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24) pure"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6377:56:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":208,"nodeType":"ExpressionStatement","src":"6377:56:5"}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":210,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6447:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6451:11:5","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":6866,"src":"6447:15:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":212,"name":"MIN_TICK_SPACING","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97,"src":"6465:16:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6447:34:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":223,"nodeType":"IfStatement","src":"6443:96:5","trueBody":{"expression":{"arguments":[{"expression":{"id":219,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6523:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6527:11:5","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":6866,"src":"6523:15:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":214,"name":"TickSpacingTooSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"6483:19:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$returns$_t_error_$","typeString":"function (int24) pure returns (error)"}},"id":217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6503:8:5","memberName":"selector","nodeType":"MemberAccess","src":"6483:28:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6512:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2294,"src":"6483:39:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24) pure"}},"id":221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6483:56:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":222,"nodeType":"ExpressionStatement","src":"6483:56:5"}},{"condition":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"function":6624,"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":224,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6553:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6557:9:5","memberName":"currency0","nodeType":"MemberAccess","referencedDeclaration":6856,"src":"6553:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":226,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6570:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6574:9:5","memberName":"currency1","nodeType":"MemberAccess","referencedDeclaration":6860,"src":"6570:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"src":"6553:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":247,"nodeType":"IfStatement","src":"6549:202:5","trueBody":{"id":246,"nodeType":"Block","src":"6585:166:5","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":236,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6680:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6684:9:5","memberName":"currency0","nodeType":"MemberAccess","referencedDeclaration":6856,"src":"6680:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":234,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"6664:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6673:6:5","memberName":"unwrap","nodeType":"MemberAccess","src":"6664:15:5","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6664:30:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":241,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6712:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6716:9:5","memberName":"currency1","nodeType":"MemberAccess","referencedDeclaration":6860,"src":"6712:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":239,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"6696:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6705:6:5","memberName":"unwrap","nodeType":"MemberAccess","src":"6696:15:5","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6696:30:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":229,"name":"CurrenciesOutOfOrderOrEqual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"6599:27:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6627:8:5","memberName":"selector","nodeType":"MemberAccess","src":"6599:36:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6636:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2340,"src":"6599:47:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_address_$_t_address_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,address,address) pure"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6599:141:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":245,"nodeType":"ExpressionStatement","src":"6599:141:5"}]}},{"condition":{"id":254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6764:38:5","subExpression":{"arguments":[{"expression":{"id":251,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6794:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6798:3:5","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":6863,"src":"6794:7:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"expression":{"id":248,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6765:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6769:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"6765:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6775:18:5","memberName":"isValidHookAddress","nodeType":"MemberAccess","referencedDeclaration":2760,"src":"6765:28:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint24_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint24) pure returns (bool)"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6765:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":269,"nodeType":"IfStatement","src":"6760:109:5","trueBody":{"expression":{"arguments":[{"arguments":[{"expression":{"id":264,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6858:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6862:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"6858:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6850:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":262,"name":"address","nodeType":"ElementaryTypeName","src":"6850:7:5","typeDescriptions":{}}},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6850:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"expression":{"id":255,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"6804:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hooks_$3530_$","typeString":"type(library Hooks)"}},"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6810:19:5","memberName":"HookAddressNotValid","nodeType":"MemberAccess","referencedDeclaration":2520,"src":"6804:25:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6830:8:5","memberName":"selector","nodeType":"MemberAccess","src":"6804:34:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6839:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2284,"src":"6804:45:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_address_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,address) pure"}},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6804:65:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":268,"nodeType":"ExpressionStatement","src":"6804:65:5"}},{"assignments":[271],"declarations":[{"constant":false,"id":271,"mutability":"mutable","name":"lpFee","nameLocation":"6887:5:5","nodeType":"VariableDeclaration","scope":329,"src":"6880:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":270,"name":"uint24","nodeType":"ElementaryTypeName","src":"6880:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":276,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":272,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6895:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6899:3:5","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":6863,"src":"6895:7:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6903:15:5","memberName":"getInitialLPFee","nodeType":"MemberAccess","referencedDeclaration":3630,"src":"6895:23:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_uint24_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (uint24)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6895:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"VariableDeclarationStatement","src":"6880:40:5"},{"expression":{"arguments":[{"id":282,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6958:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":283,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"6963:12:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"id":277,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6931:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6935:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"6931:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6941:16:5","memberName":"beforeInitialize","nodeType":"MemberAccess","referencedDeclaration":2912,"src":"6931:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint160_$returns$__$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,uint160)"}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6931:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":285,"nodeType":"ExpressionStatement","src":"6931:45:5"},{"assignments":[288],"declarations":[{"constant":false,"id":288,"mutability":"mutable","name":"id","nameLocation":"6994:2:5","nodeType":"VariableDeclaration","scope":329,"src":"6987:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":287,"nodeType":"UserDefinedTypeName","pathNode":{"id":286,"name":"PoolId","nameLocations":["6987:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"6987:6:5"},"referencedDeclaration":6825,"src":"6987:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"id":292,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":289,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"6999:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7003:4:5","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6838,"src":"6999:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolKey_$6871_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$6825_$attached_to$_t_struct$_PoolKey_$6871_memory_ptr_$","typeString":"function (struct PoolKey memory) pure returns (PoolId)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6999:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"nodeType":"VariableDeclarationStatement","src":"6987:22:5"},{"expression":{"id":301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":293,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"7020:4:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":298,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"7049:12:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":299,"name":"lpFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7063:5:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"baseExpression":{"id":294,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"7027:6:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_PoolId_$6825_$_t_struct$_State_$3870_storage_$","typeString":"mapping(PoolId => struct Pool.State storage ref)"}},"id":296,"indexExpression":{"id":295,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":288,"src":"7034:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7027:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage","typeString":"struct Pool.State storage ref"}},"id":297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7038:10:5","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3973,"src":"7027:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_uint160_$_t_uint24_$returns$_t_int24_$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer,uint160,uint24) returns (int24)"}},"id":300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7027:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"7020:49:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":302,"nodeType":"ExpressionStatement","src":"7020:49:5"},{"eventCall":{"arguments":[{"id":304,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":288,"src":"7404:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},{"expression":{"id":305,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"7408:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7412:9:5","memberName":"currency0","nodeType":"MemberAccess","referencedDeclaration":6856,"src":"7408:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"expression":{"id":307,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"7423:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7427:9:5","memberName":"currency1","nodeType":"MemberAccess","referencedDeclaration":6860,"src":"7423:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"expression":{"id":309,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"7438:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7442:3:5","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":6863,"src":"7438:7:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":311,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"7447:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7451:11:5","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":6866,"src":"7447:15:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":313,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"7464:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7468:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"7464:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},{"id":315,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"7475:12:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":316,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"7489:4:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":303,"name":"Initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1936,"src":"7393:10:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_userDefinedValueType$_PoolId_$6825_$_t_userDefinedValueType$_Currency_$6525_$_t_userDefinedValueType$_Currency_$6525_$_t_uint24_$_t_int24_$_t_contract$_IHooks_$1840_$_t_uint160_$_t_int24_$returns$__$","typeString":"function (PoolId,Currency,Currency,uint24,int24,contract IHooks,uint160,int24)"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7393:101:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":318,"nodeType":"EmitStatement","src":"7388:106:5"},{"expression":{"arguments":[{"id":324,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"7531:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":325,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"7536:12:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":326,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"7550:4:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":319,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"7505:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7509:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"7505:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7515:15:5","memberName":"afterInitialize","nodeType":"MemberAccess","referencedDeclaration":2952,"src":"7505:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint160_$_t_int24_$returns$__$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,uint160,int24)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7505:50:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":328,"nodeType":"ExpressionStatement","src":"7505:50:5"}]},"documentation":{"id":184,"nodeType":"StructuredDocumentation","src":"6084:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"6276cbbe","id":330,"implemented":true,"kind":"function","modifiers":[{"id":192,"kind":"modifierInvocation","modifierName":{"id":191,"name":"noDelegateCall","nameLocations":["6188:14:5"],"nodeType":"IdentifierPath","referencedDeclaration":1413,"src":"6188:14:5"},"nodeType":"ModifierInvocation","src":"6188:14:5"}],"name":"initialize","nameLocation":"6126:10:5","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":187,"mutability":"mutable","name":"key","nameLocation":"6152:3:5","nodeType":"VariableDeclaration","scope":330,"src":"6137:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":186,"nodeType":"UserDefinedTypeName","pathNode":{"id":185,"name":"PoolKey","nameLocations":["6137:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"6137:7:5"},"referencedDeclaration":6871,"src":"6137:7:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":189,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"6165:12:5","nodeType":"VariableDeclaration","scope":330,"src":"6157:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":188,"name":"uint160","nodeType":"ElementaryTypeName","src":"6157:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"6136:42:5"},"returnParameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":194,"mutability":"mutable","name":"tick","nameLocation":"6218:4:5","nodeType":"VariableDeclaration","scope":330,"src":"6212:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":193,"name":"int24","nodeType":"ElementaryTypeName","src":"6212:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"6211:12:5"},"scope":1216,"src":"6117:1445:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2021],"body":{"id":473,"nodeType":"Block","src":"7846:1500:5","statements":[{"assignments":[354],"declarations":[{"constant":false,"id":354,"mutability":"mutable","name":"id","nameLocation":"7863:2:5","nodeType":"VariableDeclaration","scope":473,"src":"7856:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":353,"nodeType":"UserDefinedTypeName","pathNode":{"id":352,"name":"PoolId","nameLocations":["7856:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"7856:6:5"},"referencedDeclaration":6825,"src":"7856:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"id":358,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":355,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"7868:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7872:4:5","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6838,"src":"7868:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolKey_$6871_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$6825_$attached_to$_t_struct$_PoolKey_$6871_memory_ptr_$","typeString":"function (struct PoolKey memory) pure returns (PoolId)"}},"id":357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7868:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"nodeType":"VariableDeclarationStatement","src":"7856:22:5"},{"id":418,"nodeType":"Block","src":"7888:788:5","statements":[{"assignments":[363],"declarations":[{"constant":false,"id":363,"mutability":"mutable","name":"pool","nameLocation":"7921:4:5","nodeType":"VariableDeclaration","scope":418,"src":"7902:23:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":362,"nodeType":"UserDefinedTypeName","pathNode":{"id":361,"name":"Pool.State","nameLocations":["7902:4:5","7907:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"7902:10:5"},"referencedDeclaration":3870,"src":"7902:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"}],"id":367,"initialValue":{"arguments":[{"id":365,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"7937:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}],"id":364,"name":"_getPool","nodeType":"Identifier","overloadedDeclarations":[1203],"referencedDeclaration":1203,"src":"7928:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_PoolId_$6825_$returns$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (PoolId) view returns (struct Pool.State storage pointer)"}},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7928:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7902:38:5"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":368,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"7954:4:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7959:20:5","memberName":"checkPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":5344,"src":"7954:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_State_$3870_storage_ptr_$returns$__$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer) view"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7954:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":372,"nodeType":"ExpressionStatement","src":"7954:27:5"},{"expression":{"arguments":[{"id":378,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"8028:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":379,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8033:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},{"id":380,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"8041:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":373,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"7996:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":376,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8000:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"7996:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8006:21:5","memberName":"beforeModifyLiquidity","nodeType":"MemberAccess","referencedDeclaration":3025,"src":"7996:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_bytes_calldata_ptr_$returns$__$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,struct ModifyLiquidityParams memory,bytes calldata)"}},"id":381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7996:54:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":382,"nodeType":"ExpressionStatement","src":"7996:54:5"},{"assignments":[385],"declarations":[{"constant":false,"id":385,"mutability":"mutable","name":"principalDelta","nameLocation":"8078:14:5","nodeType":"VariableDeclaration","scope":418,"src":"8065:27:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":384,"nodeType":"UserDefinedTypeName","pathNode":{"id":383,"name":"BalanceDelta","nameLocations":["8065:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"8065:12:5"},"referencedDeclaration":6311,"src":"8065:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"id":386,"nodeType":"VariableDeclarationStatement","src":"8065:27:5"},{"expression":{"id":410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":387,"name":"principalDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"8107:14:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":388,"name":"feesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":350,"src":"8123:11:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"id":389,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8106:29:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":394,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8232:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8236:6:5","memberName":"sender","nodeType":"MemberAccess","src":"8232:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":396,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8275:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8282:9:5","memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":6880,"src":"8275:16:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":398,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8324:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8331:9:5","memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":6882,"src":"8324:16:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":400,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8378:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8385:14:5","memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":6884,"src":"8378:21:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8400:8:5","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"8378:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8378:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"expression":{"id":404,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"8445:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8449:11:5","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":6866,"src":"8445:15:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":406,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8488:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8495:4:5","memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":6886,"src":"8488:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":392,"name":"Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"8176:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pool_$5409_$","typeString":"type(library Pool)"}},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8181:21:5","memberName":"ModifyLiquidityParams","nodeType":"MemberAccess","referencedDeclaration":4035,"src":"8176:26:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ModifyLiquidityParams_$4035_storage_ptr_$","typeString":"type(struct Pool.ModifyLiquidityParams storage pointer)"}},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8225:5:5","8264:9:5","8313:9:5","8362:14:5","8432:11:5","8482:4:5"],"names":["owner","tickLower","tickUpper","liquidityDelta","tickSpacing","salt"],"nodeType":"FunctionCall","src":"8176:342:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}],"expression":{"id":390,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"8138:4:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8143:15:5","memberName":"modifyLiquidity","nodeType":"MemberAccess","referencedDeclaration":4371,"src":"8138:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_struct$_ModifyLiquidityParams_$4035_memory_ptr_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer,struct Pool.ModifyLiquidityParams memory) returns (BalanceDelta,BalanceDelta)"}},"id":409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8138:394:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"src":"8106:426:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":411,"nodeType":"ExpressionStatement","src":"8106:426:5"},{"expression":{"id":416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":412,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"8623:11:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"function":6366,"id":415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":413,"name":"principalDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"8637:14:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":414,"name":"feesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":350,"src":"8654:11:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"8637:28:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"8623:42:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":417,"nodeType":"ExpressionStatement","src":"8623:42:5"}]},{"eventCall":{"arguments":[{"id":420,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"8817:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},{"expression":{"id":421,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8821:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8825:6:5","memberName":"sender","nodeType":"MemberAccess","src":"8821:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":423,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8833:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8840:9:5","memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":6880,"src":"8833:16:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":425,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8851:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8858:9:5","memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":6882,"src":"8851:16:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":427,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8869:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8876:14:5","memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":6884,"src":"8869:21:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":429,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"8892:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8899:4:5","memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":6886,"src":"8892:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":419,"name":"ModifyLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"8801:15:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_userDefinedValueType$_PoolId_$6825_$_t_address_$_t_int24_$_t_int24_$_t_int256_$_t_bytes32_$returns$__$","typeString":"function (PoolId,address,int24,int24,int256,bytes32)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8801:103:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"EmitStatement","src":"8796:108:5"},{"assignments":[435],"declarations":[{"constant":false,"id":435,"mutability":"mutable","name":"hookDelta","nameLocation":"8928:9:5","nodeType":"VariableDeclaration","scope":473,"src":"8915:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":434,"nodeType":"UserDefinedTypeName","pathNode":{"id":433,"name":"BalanceDelta","nameLocations":["8915:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"8915:12:5"},"referencedDeclaration":6311,"src":"8915:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"id":436,"nodeType":"VariableDeclarationStatement","src":"8915:22:5"},{"expression":{"id":449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":437,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"8948:11:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":438,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"8961:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"id":439,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8947:24:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":443,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"9005:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":444,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"9010:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},{"id":445,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"9018:11:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":446,"name":"feesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":350,"src":"9031:11:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":447,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"9044:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":440,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"8974:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8978:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"8974:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8984:20:5","memberName":"afterModifyLiquidity","nodeType":"MemberAccess","referencedDeclaration":3153,"src":"8974:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,struct ModifyLiquidityParams memory,BalanceDelta,BalanceDelta,bytes calldata) returns (BalanceDelta,BalanceDelta)"}},"id":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8974:79:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"src":"8947:106:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":450,"nodeType":"ExpressionStatement","src":"8947:106:5"},{"condition":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"function":6439,"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":451,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"9169:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":452,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"9182:19:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalanceDeltaLibrary_$6469_$","typeString":"type(library BalanceDeltaLibrary)"}},"id":453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9202:10:5","memberName":"ZERO_DELTA","nodeType":"MemberAccess","referencedDeclaration":6448,"src":"9182:30:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"9169:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":465,"nodeType":"IfStatement","src":"9165:109:5","trueBody":{"expression":{"arguments":[{"id":456,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"9239:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":457,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"9244:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"arguments":[{"expression":{"id":460,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"9263:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9267:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"9263:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9255:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":458,"name":"address","nodeType":"ElementaryTypeName","src":"9255:7:5","typeDescriptions":{}}},"id":462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9255:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_address","typeString":"address"}],"id":455,"name":"_accountPoolBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"9214:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolKey_$6871_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_address_$returns$__$","typeString":"function (struct PoolKey memory,BalanceDelta,address)"}},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9214:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":464,"nodeType":"ExpressionStatement","src":"9214:60:5"}},{"expression":{"arguments":[{"id":467,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"9310:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":468,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"9315:11:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"expression":{"id":469,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9328:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9332:6:5","memberName":"sender","nodeType":"MemberAccess","src":"9328:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_address","typeString":"address"}],"id":466,"name":"_accountPoolBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"9285:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolKey_$6871_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_address_$returns$__$","typeString":"function (struct PoolKey memory,BalanceDelta,address)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9285:54:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":472,"nodeType":"ExpressionStatement","src":"9285:54:5"}]},"documentation":{"id":331,"nodeType":"StructuredDocumentation","src":"7568:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"5a6bcfda","id":474,"implemented":true,"kind":"function","modifiers":[{"id":342,"kind":"modifierInvocation","modifierName":{"id":341,"name":"onlyWhenUnlocked","nameLocations":["7733:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"7733:16:5"},"nodeType":"ModifierInvocation","src":"7733:16:5"},{"id":344,"kind":"modifierInvocation","modifierName":{"id":343,"name":"noDelegateCall","nameLocations":["7758:14:5"],"nodeType":"IdentifierPath","referencedDeclaration":1413,"src":"7758:14:5"},"nodeType":"ModifierInvocation","src":"7758:14:5"}],"name":"modifyLiquidity","nameLocation":"7610:15:5","nodeType":"FunctionDefinition","parameters":{"id":340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":334,"mutability":"mutable","name":"key","nameLocation":"7641:3:5","nodeType":"VariableDeclaration","scope":474,"src":"7626:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":333,"nodeType":"UserDefinedTypeName","pathNode":{"id":332,"name":"PoolKey","nameLocations":["7626:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"7626:7:5"},"referencedDeclaration":6871,"src":"7626:7:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":337,"mutability":"mutable","name":"params","nameLocation":"7675:6:5","nodeType":"VariableDeclaration","scope":474,"src":"7646:35:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":336,"nodeType":"UserDefinedTypeName","pathNode":{"id":335,"name":"ModifyLiquidityParams","nameLocations":["7646:21:5"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"7646:21:5"},"referencedDeclaration":6887,"src":"7646:21:5","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":339,"mutability":"mutable","name":"hookData","nameLocation":"7698:8:5","nodeType":"VariableDeclaration","scope":474,"src":"7683:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":338,"name":"bytes","nodeType":"ElementaryTypeName","src":"7683:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7625:82:5"},"returnParameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":347,"mutability":"mutable","name":"callerDelta","nameLocation":"7803:11:5","nodeType":"VariableDeclaration","scope":474,"src":"7790:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":346,"nodeType":"UserDefinedTypeName","pathNode":{"id":345,"name":"BalanceDelta","nameLocations":["7790:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"7790:12:5"},"referencedDeclaration":6311,"src":"7790:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"feesAccrued","nameLocation":"7829:11:5","nodeType":"VariableDeclaration","scope":474,"src":"7816:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":349,"nodeType":"UserDefinedTypeName","pathNode":{"id":348,"name":"BalanceDelta","nameLocations":["7816:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"7816:12:5"},"referencedDeclaration":6311,"src":"7816:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"7789:52:5"},"scope":1216,"src":"7601:1745:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2036],"body":{"id":615,"nodeType":"Block","src":"9580:1491:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":493,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"9594:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},"id":494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9601:15:5","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":6894,"src":"9594:22:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9620:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9594:27:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":504,"nodeType":"IfStatement","src":"9590:77:5","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":497,"name":"SwapAmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"9623:22:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9646:8:5","memberName":"selector","nodeType":"MemberAccess","src":"9623:31:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9655:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"9623:42:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9623:44:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":503,"nodeType":"ExpressionStatement","src":"9623:44:5"}},{"assignments":[507],"declarations":[{"constant":false,"id":507,"mutability":"mutable","name":"id","nameLocation":"9684:2:5","nodeType":"VariableDeclaration","scope":615,"src":"9677:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":506,"nodeType":"UserDefinedTypeName","pathNode":{"id":505,"name":"PoolId","nameLocations":["9677:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"9677:6:5"},"referencedDeclaration":6825,"src":"9677:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"id":511,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":508,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"9689:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9693:4:5","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6838,"src":"9689:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolKey_$6871_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$6825_$attached_to$_t_struct$_PoolKey_$6871_memory_ptr_$","typeString":"function (struct PoolKey memory) pure returns (PoolId)"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9689:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"nodeType":"VariableDeclarationStatement","src":"9677:22:5"},{"assignments":[516],"declarations":[{"constant":false,"id":516,"mutability":"mutable","name":"pool","nameLocation":"9728:4:5","nodeType":"VariableDeclaration","scope":615,"src":"9709:23:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":515,"nodeType":"UserDefinedTypeName","pathNode":{"id":514,"name":"Pool.State","nameLocations":["9709:4:5","9714:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"9709:10:5"},"referencedDeclaration":3870,"src":"9709:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"}],"id":520,"initialValue":{"arguments":[{"id":518,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"9744:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}],"id":517,"name":"_getPool","nodeType":"Identifier","overloadedDeclarations":[1203],"referencedDeclaration":1203,"src":"9735:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_PoolId_$6825_$returns$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (PoolId) view returns (struct Pool.State storage pointer)"}},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9735:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9709:38:5"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":521,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"9757:4:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9762:20:5","memberName":"checkPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":5344,"src":"9757:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_State_$3870_storage_ptr_$returns$__$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer) view"}},"id":524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9757:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":525,"nodeType":"ExpressionStatement","src":"9757:27:5"},{"assignments":[528],"declarations":[{"constant":false,"id":528,"mutability":"mutable","name":"beforeSwapDelta","nameLocation":"9811:15:5","nodeType":"VariableDeclaration","scope":615,"src":"9795:31:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":527,"nodeType":"UserDefinedTypeName","pathNode":{"id":526,"name":"BeforeSwapDelta","nameLocations":["9795:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"9795:15:5"},"referencedDeclaration":6473,"src":"9795:15:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"internal"}],"id":529,"nodeType":"VariableDeclarationStatement","src":"9795:31:5"},{"id":574,"nodeType":"Block","src":"9836:807:5","statements":[{"assignments":[531],"declarations":[{"constant":false,"id":531,"mutability":"mutable","name":"amountToSwap","nameLocation":"9857:12:5","nodeType":"VariableDeclaration","scope":574,"src":"9850:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":530,"name":"int256","nodeType":"ElementaryTypeName","src":"9850:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":532,"nodeType":"VariableDeclarationStatement","src":"9850:19:5"},{"assignments":[534],"declarations":[{"constant":false,"id":534,"mutability":"mutable","name":"lpFeeOverride","nameLocation":"9890:13:5","nodeType":"VariableDeclaration","scope":574,"src":"9883:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":533,"name":"uint24","nodeType":"ElementaryTypeName","src":"9883:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":535,"nodeType":"VariableDeclarationStatement","src":"9883:20:5"},{"expression":{"id":547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":536,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"9918:12:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":537,"name":"beforeSwapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"9932:15:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},{"id":538,"name":"lpFeeOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"9949:13:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"id":539,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9917:46:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$_t_uint24_$","typeString":"tuple(int256,BeforeSwapDelta,uint24)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":543,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"9987:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":544,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"9992:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},{"id":545,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"10000:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":540,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"9966:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9970:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"9966:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9976:10:5","memberName":"beforeSwap","nodeType":"MemberAccess","referencedDeclaration":3294,"src":"9966:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_SwapParams_$6898_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_int256_$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$_t_uint24_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,struct SwapParams memory,bytes calldata) returns (int256,BeforeSwapDelta,uint24)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9966:43:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$_t_uint24_$","typeString":"tuple(int256,BeforeSwapDelta,uint24)"}},"src":"9917:92:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":548,"nodeType":"ExpressionStatement","src":"9917:92:5"},{"expression":{"id":572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":549,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"10157:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":551,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"10192:4:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},{"id":552,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"10214:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},{"arguments":[{"expression":{"id":555,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10285:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10289:11:5","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":6866,"src":"10285:15:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":557,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"10334:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},"id":558,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10341:10:5","memberName":"zeroForOne","nodeType":"MemberAccess","referencedDeclaration":6891,"src":"10334:17:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":559,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"10390:12:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":560,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"10443:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},"id":561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10450:17:5","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":6897,"src":"10443:24:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":562,"name":"lpFeeOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"10504:13:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":553,"name":"Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"10234:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pool_$5409_$","typeString":"type(library Pool)"}},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10239:10:5","memberName":"SwapParams","nodeType":"MemberAccess","referencedDeclaration":4406,"src":"10234:15:5","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapParams_$4406_storage_ptr_$","typeString":"type(struct Pool.SwapParams storage pointer)"}},"id":563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10272:11:5","10322:10:5","10373:15:5","10424:17:5","10489:13:5"],"names":["tickSpacing","zeroForOne","amountSpecified","sqrtPriceLimitX96","lpFeeOverride"],"nodeType":"FunctionCall","src":"10234:302:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},{"condition":{"expression":{"id":564,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"10554:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},"id":565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10561:10:5","memberName":"zeroForOne","nodeType":"MemberAccess","referencedDeclaration":6891,"src":"10554:17:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":568,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10590:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10594:9:5","memberName":"currency1","nodeType":"MemberAccess","referencedDeclaration":6860,"src":"10590:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10554:49:5","trueExpression":{"expression":{"id":566,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10574:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10578:9:5","memberName":"currency0","nodeType":"MemberAccess","referencedDeclaration":6856,"src":"10574:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"},{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"},{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"id":550,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":681,"src":"10169:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_userDefinedValueType$_PoolId_$6825_$_t_struct$_SwapParams_$4406_memory_ptr_$_t_userDefinedValueType$_Currency_$6525_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (struct Pool.State storage pointer,PoolId,struct Pool.SwapParams memory,Currency) returns (BalanceDelta)"}},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10169:463:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"10157:475:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":573,"nodeType":"ExpressionStatement","src":"10157:475:5"}]},{"assignments":[577],"declarations":[{"constant":false,"id":577,"mutability":"mutable","name":"hookDelta","nameLocation":"10666:9:5","nodeType":"VariableDeclaration","scope":615,"src":"10653:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":576,"nodeType":"UserDefinedTypeName","pathNode":{"id":575,"name":"BalanceDelta","nameLocations":["10653:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"10653:12:5"},"referencedDeclaration":6311,"src":"10653:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"id":578,"nodeType":"VariableDeclarationStatement","src":"10653:22:5"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":579,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"10686:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":580,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"10697:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"id":581,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10685:22:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":585,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10730:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":586,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"10735:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},{"id":587,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"10743:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":588,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"10754:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":589,"name":"beforeSwapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"10764:15:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}],"expression":{"expression":{"id":582,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10710:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10714:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"10710:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10720:9:5","memberName":"afterSwap","nodeType":"MemberAccess","referencedDeclaration":3420,"src":"10710:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_SwapParams_$6898_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,struct SwapParams memory,BalanceDelta,bytes calldata,BeforeSwapDelta) returns (BalanceDelta,BalanceDelta)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10710:70:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"src":"10685:95:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":592,"nodeType":"ExpressionStatement","src":"10685:95:5"},{"condition":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"function":6439,"id":596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":593,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"10896:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":594,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"10909:19:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalanceDeltaLibrary_$6469_$","typeString":"type(library BalanceDeltaLibrary)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10929:10:5","memberName":"ZERO_DELTA","nodeType":"MemberAccess","referencedDeclaration":6448,"src":"10909:30:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"10896:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":607,"nodeType":"IfStatement","src":"10892:109:5","trueBody":{"expression":{"arguments":[{"id":598,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10966:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":599,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"10971:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"arguments":[{"expression":{"id":602,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10990:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10994:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"10990:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10982:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":600,"name":"address","nodeType":"ElementaryTypeName","src":"10982:7:5","typeDescriptions":{}}},"id":604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10982:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_address","typeString":"address"}],"id":597,"name":"_accountPoolBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"10941:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolKey_$6871_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_address_$returns$__$","typeString":"function (struct PoolKey memory,BalanceDelta,address)"}},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10941:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":606,"nodeType":"ExpressionStatement","src":"10941:60:5"}},{"expression":{"arguments":[{"id":609,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"11037:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":610,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"11042:9:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"expression":{"id":611,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11053:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11057:6:5","memberName":"sender","nodeType":"MemberAccess","src":"11053:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_address","typeString":"address"}],"id":608,"name":"_accountPoolBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"11012:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolKey_$6871_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_address_$returns$__$","typeString":"function (struct PoolKey memory,BalanceDelta,address)"}},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11012:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":614,"nodeType":"ExpressionStatement","src":"11012:52:5"}]},"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"9352:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"f3cd914c","id":616,"implemented":true,"kind":"function","modifiers":[{"id":486,"kind":"modifierInvocation","modifierName":{"id":485,"name":"onlyWhenUnlocked","nameLocations":["9495:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"9495:16:5"},"nodeType":"ModifierInvocation","src":"9495:16:5"},{"id":488,"kind":"modifierInvocation","modifierName":{"id":487,"name":"noDelegateCall","nameLocations":["9520:14:5"],"nodeType":"IdentifierPath","referencedDeclaration":1413,"src":"9520:14:5"},"nodeType":"ModifierInvocation","src":"9520:14:5"}],"name":"swap","nameLocation":"9394:4:5","nodeType":"FunctionDefinition","parameters":{"id":484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"key","nameLocation":"9414:3:5","nodeType":"VariableDeclaration","scope":616,"src":"9399:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":477,"nodeType":"UserDefinedTypeName","pathNode":{"id":476,"name":"PoolKey","nameLocations":["9399:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"9399:7:5"},"referencedDeclaration":6871,"src":"9399:7:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":481,"mutability":"mutable","name":"params","nameLocation":"9437:6:5","nodeType":"VariableDeclaration","scope":616,"src":"9419:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams"},"typeName":{"id":480,"nodeType":"UserDefinedTypeName","pathNode":{"id":479,"name":"SwapParams","nameLocations":["9419:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":6898,"src":"9419:10:5"},"referencedDeclaration":6898,"src":"9419:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_storage_ptr","typeString":"struct SwapParams"}},"visibility":"internal"},{"constant":false,"id":483,"mutability":"mutable","name":"hookData","nameLocation":"9460:8:5","nodeType":"VariableDeclaration","scope":616,"src":"9445:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":482,"name":"bytes","nodeType":"ElementaryTypeName","src":"9445:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9398:71:5"},"returnParameters":{"id":492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":491,"mutability":"mutable","name":"swapDelta","nameLocation":"9565:9:5","nodeType":"VariableDeclaration","scope":616,"src":"9552:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":490,"nodeType":"UserDefinedTypeName","pathNode":{"id":489,"name":"BalanceDelta","nameLocations":["9552:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"9552:12:5"},"referencedDeclaration":6311,"src":"9552:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"9551:24:5"},"scope":1216,"src":"9385:1686:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":680,"nodeType":"Block","src":"11352:634:5","statements":[{"assignments":[637,639,641,644],"declarations":[{"constant":false,"id":637,"mutability":"mutable","name":"delta","nameLocation":"11376:5:5","nodeType":"VariableDeclaration","scope":680,"src":"11363:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"BalanceDelta","nameLocations":["11363:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"11363:12:5"},"referencedDeclaration":6311,"src":"11363:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":639,"mutability":"mutable","name":"amountToProtocol","nameLocation":"11391:16:5","nodeType":"VariableDeclaration","scope":680,"src":"11383:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint256","nodeType":"ElementaryTypeName","src":"11383:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":641,"mutability":"mutable","name":"swapFee","nameLocation":"11416:7:5","nodeType":"VariableDeclaration","scope":680,"src":"11409:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":640,"name":"uint24","nodeType":"ElementaryTypeName","src":"11409:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":644,"mutability":"mutable","name":"result","nameLocation":"11448:6:5","nodeType":"VariableDeclaration","scope":680,"src":"11425:29:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult"},"typeName":{"id":643,"nodeType":"UserDefinedTypeName","pathNode":{"id":642,"name":"Pool.SwapResult","nameLocations":["11425:4:5","11430:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":4378,"src":"11425:15:5"},"referencedDeclaration":4378,"src":"11425:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_storage_ptr","typeString":"struct Pool.SwapResult"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":647,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":626,"src":"11480:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}],"expression":{"id":645,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":620,"src":"11470:4:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11475:4:5","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":5021,"src":"11470:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_struct$_SwapParams_$4406_memory_ptr_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_uint256_$_t_uint24_$_t_struct$_SwapResult_$4378_memory_ptr_$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer,struct Pool.SwapParams memory) returns (BalanceDelta,uint256,uint24,struct Pool.SwapResult memory)"}},"id":648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11470:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_uint256_$_t_uint24_$_t_struct$_SwapResult_$4378_memory_ptr_$","typeString":"tuple(BalanceDelta,uint256,uint24,struct Pool.SwapResult memory)"}},"nodeType":"VariableDeclarationStatement","src":"11362:125:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":650,"name":"amountToProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"11546:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11565:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11546:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":658,"nodeType":"IfStatement","src":"11542:78:5","trueBody":{"expression":{"arguments":[{"id":654,"name":"inputCurrency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"11588:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"id":655,"name":"amountToProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"11603:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":653,"name":"_updateProtocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"11568:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_uint256_$returns$__$","typeString":"function (Currency,uint256)"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11568:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":657,"nodeType":"ExpressionStatement","src":"11568:52:5"}},{"eventCall":{"arguments":[{"id":660,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"11753:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},{"expression":{"id":661,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11769:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11773:6:5","memberName":"sender","nodeType":"MemberAccess","src":"11769:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":663,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"11793:5:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11799:7:5","memberName":"amount0","nodeType":"MemberAccess","referencedDeclaration":6458,"src":"11793:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (BalanceDelta) pure returns (int128)"}},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11793:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":666,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"11822:5:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11828:7:5","memberName":"amount1","nodeType":"MemberAccess","referencedDeclaration":6468,"src":"11822:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (BalanceDelta) pure returns (int128)"}},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11822:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"expression":{"id":669,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"11851:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11858:12:5","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"11851:19:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":671,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"11884:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11891:9:5","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"11884:16:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":673,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"11914:6:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11921:4:5","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"11914:11:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":675,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"11939:7:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":659,"name":"Swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1972,"src":"11735:4:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_userDefinedValueType$_PoolId_$6825_$_t_address_$_t_int128_$_t_int128_$_t_uint160_$_t_uint128_$_t_int24_$_t_uint24_$returns$__$","typeString":"function (PoolId,address,int128,int128,uint160,uint128,int24,uint24)"}},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11735:221:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":677,"nodeType":"EmitStatement","src":"11730:226:5"},{"expression":{"id":678,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"11974:5:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"functionReturnParameters":634,"id":679,"nodeType":"Return","src":"11967:12:5"}]},"documentation":{"id":617,"nodeType":"StructuredDocumentation","src":"11077:112:5","text":"@notice Internal swap function to execute a swap, take protocol fees on input token, and emit the swap event"},"id":681,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nameLocation":"11203:5:5","nodeType":"FunctionDefinition","parameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":620,"mutability":"mutable","name":"pool","nameLocation":"11228:4:5","nodeType":"VariableDeclaration","scope":681,"src":"11209:23:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":619,"nodeType":"UserDefinedTypeName","pathNode":{"id":618,"name":"Pool.State","nameLocations":["11209:4:5","11214:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"11209:10:5"},"referencedDeclaration":3870,"src":"11209:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":623,"mutability":"mutable","name":"id","nameLocation":"11241:2:5","nodeType":"VariableDeclaration","scope":681,"src":"11234:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":622,"nodeType":"UserDefinedTypeName","pathNode":{"id":621,"name":"PoolId","nameLocations":["11234:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"11234:6:5"},"referencedDeclaration":6825,"src":"11234:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"},{"constant":false,"id":626,"mutability":"mutable","name":"params","nameLocation":"11268:6:5","nodeType":"VariableDeclaration","scope":681,"src":"11245:29:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams"},"typeName":{"id":625,"nodeType":"UserDefinedTypeName","pathNode":{"id":624,"name":"Pool.SwapParams","nameLocations":["11245:4:5","11250:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":4406,"src":"11245:15:5"},"referencedDeclaration":4406,"src":"11245:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_storage_ptr","typeString":"struct Pool.SwapParams"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"inputCurrency","nameLocation":"11285:13:5","nodeType":"VariableDeclaration","scope":681,"src":"11276:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":628,"nodeType":"UserDefinedTypeName","pathNode":{"id":627,"name":"Currency","nameLocations":["11276:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"11276:8:5"},"referencedDeclaration":6525,"src":"11276:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"11208:91:5"},"returnParameters":{"id":634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":681,"src":"11334:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":632,"nodeType":"UserDefinedTypeName","pathNode":{"id":631,"name":"BalanceDelta","nameLocations":["11334:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"11334:12:5"},"referencedDeclaration":6311,"src":"11334:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"11333:14:5"},"scope":1216,"src":"11194:792:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2052],"body":{"id":767,"nodeType":"Block","src":"12226:531:5","statements":[{"assignments":[703],"declarations":[{"constant":false,"id":703,"mutability":"mutable","name":"poolId","nameLocation":"12243:6:5","nodeType":"VariableDeclaration","scope":767,"src":"12236:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":702,"nodeType":"UserDefinedTypeName","pathNode":{"id":701,"name":"PoolId","nameLocations":["12236:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"12236:6:5"},"referencedDeclaration":6825,"src":"12236:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"id":707,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":704,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"12252:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12256:4:5","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6838,"src":"12252:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolKey_$6871_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$6825_$attached_to$_t_struct$_PoolKey_$6871_memory_ptr_$","typeString":"function (struct PoolKey memory) pure returns (PoolId)"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12252:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"nodeType":"VariableDeclarationStatement","src":"12236:26:5"},{"assignments":[712],"declarations":[{"constant":false,"id":712,"mutability":"mutable","name":"pool","nameLocation":"12291:4:5","nodeType":"VariableDeclaration","scope":767,"src":"12272:23:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":711,"nodeType":"UserDefinedTypeName","pathNode":{"id":710,"name":"Pool.State","nameLocations":["12272:4:5","12277:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"12272:10:5"},"referencedDeclaration":3870,"src":"12272:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"}],"id":716,"initialValue":{"arguments":[{"id":714,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"12307:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}],"id":713,"name":"_getPool","nodeType":"Identifier","overloadedDeclarations":[1203],"referencedDeclaration":1203,"src":"12298:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_PoolId_$6825_$returns$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (PoolId) view returns (struct Pool.State storage pointer)"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12298:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12272:42:5"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":717,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"12324:4:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12329:20:5","memberName":"checkPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":5344,"src":"12324:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_State_$3870_storage_ptr_$returns$__$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer) view"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12324:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":721,"nodeType":"ExpressionStatement","src":"12324:27:5"},{"expression":{"arguments":[{"id":727,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"12385:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":728,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"12390:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":729,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"12399:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":730,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"12408:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":722,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"12362:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12366:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"12362:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12372:12:5","memberName":"beforeDonate","nodeType":"MemberAccess","referencedDeclaration":3463,"src":"12362:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,uint256,uint256,bytes calldata)"}},"id":731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12362:55:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":732,"nodeType":"ExpressionStatement","src":"12362:55:5"},{"expression":{"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":733,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"12428:5:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":736,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"12448:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":737,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"12457:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":734,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"12436:4:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12441:6:5","memberName":"donate","nodeType":"MemberAccess","referencedDeclaration":5102,"src":"12436:11:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer,uint256,uint256) returns (BalanceDelta)"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12436:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"12428:37:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":740,"nodeType":"ExpressionStatement","src":"12428:37:5"},{"expression":{"arguments":[{"id":742,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"12501:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":743,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"12506:5:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"expression":{"id":744,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12513:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12517:6:5","memberName":"sender","nodeType":"MemberAccess","src":"12513:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},{"typeIdentifier":"t_address","typeString":"address"}],"id":741,"name":"_accountPoolBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"12476:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolKey_$6871_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_address_$returns$__$","typeString":"function (struct PoolKey memory,BalanceDelta,address)"}},"id":746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12476:48:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":747,"nodeType":"ExpressionStatement","src":"12476:48:5"},{"eventCall":{"arguments":[{"id":749,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"12648:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},{"expression":{"id":750,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12656:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12660:6:5","memberName":"sender","nodeType":"MemberAccess","src":"12656:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":752,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"12668:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":753,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"12677:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":748,"name":"Donate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"12641:6:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_userDefinedValueType$_PoolId_$6825_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (PoolId,address,uint256,uint256)"}},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12641:44:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":755,"nodeType":"EmitStatement","src":"12636:49:5"},{"expression":{"arguments":[{"id":761,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"12718:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":762,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"12723:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":763,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"12732:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":764,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"12741:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":756,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"12696:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12700:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"12696:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12706:11:5","memberName":"afterDonate","nodeType":"MemberAccess","referencedDeclaration":3506,"src":"12696:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,struct PoolKey memory,uint256,uint256,bytes calldata)"}},"id":765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12696:54:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":766,"nodeType":"ExpressionStatement","src":"12696:54:5"}]},"documentation":{"id":682,"nodeType":"StructuredDocumentation","src":"11992:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"234266d7","id":768,"implemented":true,"kind":"function","modifiers":[{"id":694,"kind":"modifierInvocation","modifierName":{"id":693,"name":"onlyWhenUnlocked","nameLocations":["12145:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"12145:16:5"},"nodeType":"ModifierInvocation","src":"12145:16:5"},{"id":696,"kind":"modifierInvocation","modifierName":{"id":695,"name":"noDelegateCall","nameLocations":["12170:14:5"],"nodeType":"IdentifierPath","referencedDeclaration":1413,"src":"12170:14:5"},"nodeType":"ModifierInvocation","src":"12170:14:5"}],"name":"donate","nameLocation":"12034:6:5","nodeType":"FunctionDefinition","parameters":{"id":692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":685,"mutability":"mutable","name":"key","nameLocation":"12056:3:5","nodeType":"VariableDeclaration","scope":768,"src":"12041:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":684,"nodeType":"UserDefinedTypeName","pathNode":{"id":683,"name":"PoolKey","nameLocations":["12041:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"12041:7:5"},"referencedDeclaration":6871,"src":"12041:7:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":687,"mutability":"mutable","name":"amount0","nameLocation":"12069:7:5","nodeType":"VariableDeclaration","scope":768,"src":"12061:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":686,"name":"uint256","nodeType":"ElementaryTypeName","src":"12061:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":689,"mutability":"mutable","name":"amount1","nameLocation":"12086:7:5","nodeType":"VariableDeclaration","scope":768,"src":"12078:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":688,"name":"uint256","nodeType":"ElementaryTypeName","src":"12078:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":691,"mutability":"mutable","name":"hookData","nameLocation":"12110:8:5","nodeType":"VariableDeclaration","scope":768,"src":"12095:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":690,"name":"bytes","nodeType":"ElementaryTypeName","src":"12095:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12040:79:5"},"returnParameters":{"id":700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"delta","nameLocation":"12215:5:5","nodeType":"VariableDeclaration","scope":768,"src":"12202:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":698,"nodeType":"UserDefinedTypeName","pathNode":{"id":697,"name":"BalanceDelta","nameLocations":["12202:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"12202:12:5"},"referencedDeclaration":6311,"src":"12202:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"12201:20:5"},"scope":1216,"src":"12025:732:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2059],"body":{"id":799,"nodeType":"Block","src":"12838:411:5","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":775,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"12906:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12915:13:5","memberName":"isAddressZero","nodeType":"MemberAccess","referencedDeclaration":6781,"src":"12906:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (bool)"}},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12906:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":797,"nodeType":"Block","src":"13103:140:5","statements":[{"assignments":[785],"declarations":[{"constant":false,"id":785,"mutability":"mutable","name":"balance","nameLocation":"13125:7:5","nodeType":"VariableDeclaration","scope":797,"src":"13117:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"13117:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":789,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":786,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"13135:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13144:13:5","memberName":"balanceOfSelf","nodeType":"MemberAccess","referencedDeclaration":6732,"src":"13135:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Currency_$6525_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) view returns (uint256)"}},"id":788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13135:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13117:42:5"},{"expression":{"arguments":[{"id":793,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"13214:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"id":794,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"13224:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":790,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"13173:16:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyReserves_$2252_$","typeString":"type(library CurrencyReserves)"}},"id":792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13190:23:5","memberName":"syncCurrencyAndReserves","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"13173:40:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_uint256_$returns$__$","typeString":"function (Currency,uint256)"}},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13173:59:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":796,"nodeType":"ExpressionStatement","src":"13173:59:5"}]},"id":798,"nodeType":"IfStatement","src":"12902:341:5","trueBody":{"id":783,"nodeType":"Block","src":"12932:165:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":778,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"13054:16:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyReserves_$2252_$","typeString":"type(library CurrencyReserves)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13071:13:5","memberName":"resetCurrency","nodeType":"MemberAccess","referencedDeclaration":2234,"src":"13054:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13054:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":782,"nodeType":"ExpressionStatement","src":"13054:32:5"}]}}]},"documentation":{"id":769,"nodeType":"StructuredDocumentation","src":"12763:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"a5841194","id":800,"implemented":true,"kind":"function","modifiers":[],"name":"sync","nameLocation":"12805:4:5","nodeType":"FunctionDefinition","parameters":{"id":773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":772,"mutability":"mutable","name":"currency","nameLocation":"12819:8:5","nodeType":"VariableDeclaration","scope":800,"src":"12810:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":771,"nodeType":"UserDefinedTypeName","pathNode":{"id":770,"name":"Currency","nameLocations":["12810:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"12810:8:5"},"referencedDeclaration":6525,"src":"12810:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"12809:19:5"},"returnParameters":{"id":774,"nodeType":"ParameterList","parameters":[],"src":"12838:0:5"},"scope":1216,"src":"12796:453:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2070],"body":{"id":832,"nodeType":"Block","src":"13375:214:5","statements":[{"id":831,"nodeType":"UncheckedBlock","src":"13385:198:5","statements":[{"expression":{"arguments":[{"id":814,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":804,"src":"13486:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13496:20:5","subExpression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"13498:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13505:8:5","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"13498:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13498:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":818,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13497:19:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"expression":{"id":820,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13518:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13522:6:5","memberName":"sender","nodeType":"MemberAccess","src":"13518:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_address","typeString":"address"}],"id":813,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"13472:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_int128_$_t_address_$returns$__$","typeString":"function (Currency,int128,address)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13472:57:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":823,"nodeType":"ExpressionStatement","src":"13472:57:5"},{"expression":{"arguments":[{"id":827,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"13561:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":828,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"13565:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":824,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":804,"src":"13543:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13552:8:5","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":6698,"src":"13543:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency,address,uint256)"}},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13543:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":830,"nodeType":"ExpressionStatement","src":"13543:29:5"}]}]},"documentation":{"id":801,"nodeType":"StructuredDocumentation","src":"13255:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"0b0d9c09","id":833,"implemented":true,"kind":"function","modifiers":[{"id":811,"kind":"modifierInvocation","modifierName":{"id":810,"name":"onlyWhenUnlocked","nameLocations":["13358:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"13358:16:5"},"nodeType":"ModifierInvocation","src":"13358:16:5"}],"name":"take","nameLocation":"13297:4:5","nodeType":"FunctionDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":804,"mutability":"mutable","name":"currency","nameLocation":"13311:8:5","nodeType":"VariableDeclaration","scope":833,"src":"13302:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":803,"nodeType":"UserDefinedTypeName","pathNode":{"id":802,"name":"Currency","nameLocations":["13302:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"13302:8:5"},"referencedDeclaration":6525,"src":"13302:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":806,"mutability":"mutable","name":"to","nameLocation":"13329:2:5","nodeType":"VariableDeclaration","scope":833,"src":"13321:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":805,"name":"address","nodeType":"ElementaryTypeName","src":"13321:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":808,"mutability":"mutable","name":"amount","nameLocation":"13341:6:5","nodeType":"VariableDeclaration","scope":833,"src":"13333:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":807,"name":"uint256","nodeType":"ElementaryTypeName","src":"13333:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13301:47:5"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[],"src":"13375:0:5"},"scope":1216,"src":"13288:301:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2076],"body":{"id":846,"nodeType":"Block","src":"13698:43:5","statements":[{"expression":{"arguments":[{"expression":{"id":842,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13723:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13727:6:5","memberName":"sender","nodeType":"MemberAccess","src":"13723:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":841,"name":"_settle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"13715:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13715:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":840,"id":845,"nodeType":"Return","src":"13708:26:5"}]},"documentation":{"id":834,"nodeType":"StructuredDocumentation","src":"13595:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"11da60b4","id":847,"implemented":true,"kind":"function","modifiers":[{"id":837,"kind":"modifierInvocation","modifierName":{"id":836,"name":"onlyWhenUnlocked","nameLocations":["13663:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"13663:16:5"},"nodeType":"ModifierInvocation","src":"13663:16:5"}],"name":"settle","nameLocation":"13637:6:5","nodeType":"FunctionDefinition","parameters":{"id":835,"nodeType":"ParameterList","parameters":[],"src":"13643:2:5"},"returnParameters":{"id":840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":847,"src":"13689:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":838,"name":"uint256","nodeType":"ElementaryTypeName","src":"13689:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13688:9:5"},"scope":1216,"src":"13628:113:5","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2084],"body":{"id":861,"nodeType":"Block","src":"13870:42:5","statements":[{"expression":{"arguments":[{"id":858,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"13895:9:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":857,"name":"_settle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"13887:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13887:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":856,"id":860,"nodeType":"Return","src":"13880:25:5"}]},"documentation":{"id":848,"nodeType":"StructuredDocumentation","src":"13747:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"3dd45adb","id":862,"implemented":true,"kind":"function","modifiers":[{"id":853,"kind":"modifierInvocation","modifierName":{"id":852,"name":"onlyWhenUnlocked","nameLocations":["13835:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"13835:16:5"},"nodeType":"ModifierInvocation","src":"13835:16:5"}],"name":"settleFor","nameLocation":"13789:9:5","nodeType":"FunctionDefinition","parameters":{"id":851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"recipient","nameLocation":"13807:9:5","nodeType":"VariableDeclaration","scope":862,"src":"13799:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":849,"name":"address","nodeType":"ElementaryTypeName","src":"13799:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13798:19:5"},"returnParameters":{"id":856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":862,"src":"13861:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":854,"name":"uint256","nodeType":"ElementaryTypeName","src":"13861:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13860:9:5"},"scope":1216,"src":"13780:132:5","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2093],"body":{"id":908,"nodeType":"Block","src":"14027:430:5","statements":[{"assignments":[874],"declarations":[{"constant":false,"id":874,"mutability":"mutable","name":"current","nameLocation":"14044:7:5","nodeType":"VariableDeclaration","scope":908,"src":"14037:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":873,"name":"int256","nodeType":"ElementaryTypeName","src":"14037:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":880,"initialValue":{"arguments":[{"expression":{"id":877,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14072:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14076:6:5","memberName":"sender","nodeType":"MemberAccess","src":"14072:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":875,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"14054:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14063:8:5","memberName":"getDelta","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"14054:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Currency_$6525_$_t_address_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency,address) view returns (int256)"}},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14054:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"14037:46:5"},{"assignments":[882],"declarations":[{"constant":false,"id":882,"mutability":"mutable","name":"amountDelta","nameLocation":"14177:11:5","nodeType":"VariableDeclaration","scope":908,"src":"14170:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":881,"name":"int128","nodeType":"ElementaryTypeName","src":"14170:6:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":886,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":883,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"14191:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14198:8:5","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"14191:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14191:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"14170:38:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":887,"name":"amountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"14222:11:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":888,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"14237:7:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14222:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":897,"nodeType":"IfStatement","src":"14218:77:5","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":890,"name":"MustClearExactPositiveDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"14246:27:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14274:8:5","memberName":"selector","nodeType":"MemberAccess","src":"14246:36:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14283:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"14246:47:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14246:49:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":896,"nodeType":"ExpressionStatement","src":"14246:49:5"}},{"id":907,"nodeType":"UncheckedBlock","src":"14365:86:5","statements":[{"expression":{"arguments":[{"id":899,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"14403:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"id":902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14413:14:5","subExpression":{"components":[{"id":900,"name":"amountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"14415:11:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":901,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14414:13:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"expression":{"id":903,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14429:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14433:6:5","memberName":"sender","nodeType":"MemberAccess","src":"14429:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_address","typeString":"address"}],"id":898,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"14389:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_int128_$_t_address_$returns$__$","typeString":"function (Currency,int128,address)"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14389:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":906,"nodeType":"ExpressionStatement","src":"14389:51:5"}]}]},"documentation":{"id":863,"nodeType":"StructuredDocumentation","src":"13918:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"80f0b44c","id":909,"implemented":true,"kind":"function","modifiers":[{"id":871,"kind":"modifierInvocation","modifierName":{"id":870,"name":"onlyWhenUnlocked","nameLocations":["14010:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"14010:16:5"},"nodeType":"ModifierInvocation","src":"14010:16:5"}],"name":"clear","nameLocation":"13960:5:5","nodeType":"FunctionDefinition","parameters":{"id":869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"currency","nameLocation":"13975:8:5","nodeType":"VariableDeclaration","scope":909,"src":"13966:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":865,"nodeType":"UserDefinedTypeName","pathNode":{"id":864,"name":"Currency","nameLocations":["13966:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"13966:8:5"},"referencedDeclaration":6525,"src":"13966:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":868,"mutability":"mutable","name":"amount","nameLocation":"13993:6:5","nodeType":"VariableDeclaration","scope":909,"src":"13985:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":867,"name":"uint256","nodeType":"ElementaryTypeName","src":"13985:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13965:35:5"},"returnParameters":{"id":872,"nodeType":"ParameterList","parameters":[],"src":"14027:0:5"},"scope":1216,"src":"13951:506:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2103],"body":{"id":949,"nodeType":"Block","src":"14576:279:5","statements":[{"id":948,"nodeType":"UncheckedBlock","src":"14586:263:5","statements":[{"assignments":[923],"declarations":[{"constant":false,"id":923,"mutability":"mutable","name":"currency","nameLocation":"14619:8:5","nodeType":"VariableDeclaration","scope":948,"src":"14610:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":922,"nodeType":"UserDefinedTypeName","pathNode":{"id":921,"name":"Currency","nameLocations":["14610:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"14610:8:5"},"referencedDeclaration":6525,"src":"14610:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"id":928,"initialValue":{"arguments":[{"id":926,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":914,"src":"14653:2:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":924,"name":"CurrencyLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6819,"src":"14630:15:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyLibrary_$6819_$","typeString":"type(library CurrencyLibrary)"}},"id":925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14646:6:5","memberName":"fromId","nodeType":"MemberAccess","referencedDeclaration":6818,"src":"14630:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (uint256) pure returns (Currency)"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14630:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"nodeType":"VariableDeclarationStatement","src":"14610:46:5"},{"expression":{"arguments":[{"id":930,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"14747:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14757:20:5","subExpression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":931,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"14759:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14766:8:5","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"14759:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14759:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":934,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14758:19:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"expression":{"id":936,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14779:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14783:6:5","memberName":"sender","nodeType":"MemberAccess","src":"14779:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_address","typeString":"address"}],"id":929,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"14733:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_int128_$_t_address_$returns$__$","typeString":"function (Currency,int128,address)"}},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14733:57:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":939,"nodeType":"ExpressionStatement","src":"14733:57:5"},{"expression":{"arguments":[{"id":941,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"14810:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":942,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"14814:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14823:4:5","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6798,"src":"14814:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (uint256)"}},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14814:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":945,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"14831:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":940,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"14804:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14804:34:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":947,"nodeType":"ExpressionStatement","src":"14804:34:5"}]}]},"documentation":{"id":910,"nodeType":"StructuredDocumentation","src":"14463:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"156e29f6","id":950,"implemented":true,"kind":"function","modifiers":[{"id":919,"kind":"modifierInvocation","modifierName":{"id":918,"name":"onlyWhenUnlocked","nameLocations":["14559:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"14559:16:5"},"nodeType":"ModifierInvocation","src":"14559:16:5"}],"name":"mint","nameLocation":"14505:4:5","nodeType":"FunctionDefinition","parameters":{"id":917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"mutability":"mutable","name":"to","nameLocation":"14518:2:5","nodeType":"VariableDeclaration","scope":950,"src":"14510:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":911,"name":"address","nodeType":"ElementaryTypeName","src":"14510:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":914,"mutability":"mutable","name":"id","nameLocation":"14530:2:5","nodeType":"VariableDeclaration","scope":950,"src":"14522:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":913,"name":"uint256","nodeType":"ElementaryTypeName","src":"14522:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":916,"mutability":"mutable","name":"amount","nameLocation":"14542:6:5","nodeType":"VariableDeclaration","scope":950,"src":"14534:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":915,"name":"uint256","nodeType":"ElementaryTypeName","src":"14534:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14509:40:5"},"returnParameters":{"id":920,"nodeType":"ParameterList","parameters":[],"src":"14576:0:5"},"scope":1216,"src":"14496:359:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2113],"body":{"id":987,"nodeType":"Block","src":"14976:177:5","statements":[{"assignments":[964],"declarations":[{"constant":false,"id":964,"mutability":"mutable","name":"currency","nameLocation":"14995:8:5","nodeType":"VariableDeclaration","scope":987,"src":"14986:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":963,"nodeType":"UserDefinedTypeName","pathNode":{"id":962,"name":"Currency","nameLocations":["14986:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"14986:8:5"},"referencedDeclaration":6525,"src":"14986:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"id":969,"initialValue":{"arguments":[{"id":967,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15029:2:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":965,"name":"CurrencyLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6819,"src":"15006:15:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyLibrary_$6819_$","typeString":"type(library CurrencyLibrary)"}},"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15022:6:5","memberName":"fromId","nodeType":"MemberAccess","referencedDeclaration":6818,"src":"15006:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (uint256) pure returns (Currency)"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15006:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"nodeType":"VariableDeclarationStatement","src":"14986:46:5"},{"expression":{"arguments":[{"id":971,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"15056:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":972,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"15066:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15073:8:5","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"15066:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15066:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"expression":{"id":975,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15085:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15089:6:5","memberName":"sender","nodeType":"MemberAccess","src":"15085:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_address","typeString":"address"}],"id":970,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"15042:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_int128_$_t_address_$returns$__$","typeString":"function (Currency,int128,address)"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15042:54:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":978,"nodeType":"ExpressionStatement","src":"15042:54:5"},{"expression":{"arguments":[{"id":980,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"15116:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":981,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"15122:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15131:4:5","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6798,"src":"15122:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (uint256)"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15122:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":984,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"15139:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":979,"name":"_burnFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1288,"src":"15106:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15106:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":986,"nodeType":"ExpressionStatement","src":"15106:40:5"}]},"documentation":{"id":951,"nodeType":"StructuredDocumentation","src":"14861:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"f5298aca","id":988,"implemented":true,"kind":"function","modifiers":[{"id":960,"kind":"modifierInvocation","modifierName":{"id":959,"name":"onlyWhenUnlocked","nameLocations":["14959:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":120,"src":"14959:16:5"},"nodeType":"ModifierInvocation","src":"14959:16:5"}],"name":"burn","nameLocation":"14903:4:5","nodeType":"FunctionDefinition","parameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":953,"mutability":"mutable","name":"from","nameLocation":"14916:4:5","nodeType":"VariableDeclaration","scope":988,"src":"14908:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":952,"name":"address","nodeType":"ElementaryTypeName","src":"14908:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"id","nameLocation":"14930:2:5","nodeType":"VariableDeclaration","scope":988,"src":"14922:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":954,"name":"uint256","nodeType":"ElementaryTypeName","src":"14922:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"amount","nameLocation":"14942:6:5","nodeType":"VariableDeclaration","scope":988,"src":"14934:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":956,"name":"uint256","nodeType":"ElementaryTypeName","src":"14934:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14907:42:5"},"returnParameters":{"id":961,"nodeType":"ParameterList","parameters":[],"src":"14976:0:5"},"scope":1216,"src":"14894:259:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2122],"body":{"id":1039,"nodeType":"Block","src":"15273:272:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15287:23:5","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":997,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":992,"src":"15288:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15292:3:5","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":6863,"src":"15288:7:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15296:12:5","memberName":"isDynamicFee","nodeType":"MemberAccess","referencedDeclaration":3575,"src":"15288:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15288:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1002,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15314:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15318:6:5","memberName":"sender","nodeType":"MemberAccess","src":"15314:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"expression":{"id":1006,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":992,"src":"15336:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":1007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15340:5:5","memberName":"hooks","nodeType":"MemberAccess","referencedDeclaration":6870,"src":"15336:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":1005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15328:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1004,"name":"address","nodeType":"ElementaryTypeName","src":"15328:7:5","typeDescriptions":{}}},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15328:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15314:32:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15287:59:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1019,"nodeType":"IfStatement","src":"15283:142:5","trueBody":{"id":1018,"nodeType":"Block","src":"15348:77:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1011,"name":"UnauthorizedDynamicLPFeeUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"15362:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15393:8:5","memberName":"selector","nodeType":"MemberAccess","src":"15362:39:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15402:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"15362:50:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15362:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1017,"nodeType":"ExpressionStatement","src":"15362:52:5"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1020,"name":"newDynamicLPFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"15434:15:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15450:8:5","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":3608,"src":"15434:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$__$attached_to$_t_uint24_$","typeString":"function (uint24) pure"}},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15434:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1024,"nodeType":"ExpressionStatement","src":"15434:26:5"},{"assignments":[1027],"declarations":[{"constant":false,"id":1027,"mutability":"mutable","name":"id","nameLocation":"15477:2:5","nodeType":"VariableDeclaration","scope":1039,"src":"15470:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1026,"nodeType":"UserDefinedTypeName","pathNode":{"id":1025,"name":"PoolId","nameLocations":["15470:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"15470:6:5"},"referencedDeclaration":6825,"src":"15470:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"id":1031,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1028,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":992,"src":"15482:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":1029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15486:4:5","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6838,"src":"15482:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolKey_$6871_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$6825_$attached_to$_t_struct$_PoolKey_$6871_memory_ptr_$","typeString":"function (struct PoolKey memory) pure returns (PoolId)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15482:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"nodeType":"VariableDeclarationStatement","src":"15470:22:5"},{"expression":{"arguments":[{"id":1036,"name":"newDynamicLPFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"15522:15:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"baseExpression":{"id":1032,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"15502:6:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_PoolId_$6825_$_t_struct$_State_$3870_storage_$","typeString":"mapping(PoolId => struct Pool.State storage ref)"}},"id":1034,"indexExpression":{"id":1033,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"15509:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15502:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage","typeString":"struct Pool.State storage ref"}},"id":1035,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15513:8:5","memberName":"setLPFee","nodeType":"MemberAccess","referencedDeclaration":4022,"src":"15502:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_uint24_$returns$__$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer,uint24)"}},"id":1037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15502:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1038,"nodeType":"ExpressionStatement","src":"15502:36:5"}]},"documentation":{"id":989,"nodeType":"StructuredDocumentation","src":"15159:28:5","text":"@inheritdoc IPoolManager"},"functionSelector":"52759651","id":1040,"implemented":true,"kind":"function","modifiers":[],"name":"updateDynamicLPFee","nameLocation":"15201:18:5","nodeType":"FunctionDefinition","parameters":{"id":995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":992,"mutability":"mutable","name":"key","nameLocation":"15235:3:5","nodeType":"VariableDeclaration","scope":1040,"src":"15220:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":991,"nodeType":"UserDefinedTypeName","pathNode":{"id":990,"name":"PoolKey","nameLocations":["15220:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"15220:7:5"},"referencedDeclaration":6871,"src":"15220:7:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":994,"mutability":"mutable","name":"newDynamicLPFee","nameLocation":"15247:15:5","nodeType":"VariableDeclaration","scope":1040,"src":"15240:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":993,"name":"uint24","nodeType":"ElementaryTypeName","src":"15240:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15219:44:5"},"returnParameters":{"id":996,"nodeType":"ParameterList","parameters":[],"src":"15273:0:5"},"scope":1216,"src":"15192:353:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1108,"nodeType":"Block","src":"15717:757:5","statements":[{"assignments":[1049],"declarations":[{"constant":false,"id":1049,"mutability":"mutable","name":"currency","nameLocation":"15736:8:5","nodeType":"VariableDeclaration","scope":1108,"src":"15727:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":1048,"nodeType":"UserDefinedTypeName","pathNode":{"id":1047,"name":"Currency","nameLocations":["15727:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"15727:8:5"},"referencedDeclaration":6525,"src":"15727:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"id":1053,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1050,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"15747:16:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyReserves_$2252_$","typeString":"type(library CurrencyReserves)"}},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15764:17:5","memberName":"getSyncedCurrency","nodeType":"MemberAccess","referencedDeclaration":2229,"src":"15747:34:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function () view returns (Currency)"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15747:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"nodeType":"VariableDeclarationStatement","src":"15727:56:5"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1054,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"15916:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15925:13:5","memberName":"isAddressZero","nodeType":"MemberAccess","referencedDeclaration":6781,"src":"15916:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (bool)"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15916:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1098,"nodeType":"Block","src":"15989:417:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1063,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16007:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16011:5:5","memberName":"value","nodeType":"MemberAccess","src":"16007:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16019:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16007:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1074,"nodeType":"IfStatement","src":"16003:59:5","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1067,"name":"NonzeroNativeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"16022:18:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16041:8:5","memberName":"selector","nodeType":"MemberAccess","src":"16022:27:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16050:10:5","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"16022:38:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16022:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1073,"nodeType":"ExpressionStatement","src":"16022:40:5"}},{"assignments":[1076],"declarations":[{"constant":false,"id":1076,"mutability":"mutable","name":"reservesBefore","nameLocation":"16187:14:5","nodeType":"VariableDeclaration","scope":1098,"src":"16179:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1075,"name":"uint256","nodeType":"ElementaryTypeName","src":"16179:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1080,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1077,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"16204:16:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyReserves_$2252_$","typeString":"type(library CurrencyReserves)"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16221:17:5","memberName":"getSyncedReserves","nodeType":"MemberAccess","referencedDeclaration":2251,"src":"16204:34:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16204:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16179:61:5"},{"assignments":[1082],"declarations":[{"constant":false,"id":1082,"mutability":"mutable","name":"reservesNow","nameLocation":"16262:11:5","nodeType":"VariableDeclaration","scope":1098,"src":"16254:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1081,"name":"uint256","nodeType":"ElementaryTypeName","src":"16254:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1086,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1083,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"16276:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16285:13:5","memberName":"balanceOfSelf","nodeType":"MemberAccess","referencedDeclaration":6732,"src":"16276:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Currency_$6525_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) view returns (uint256)"}},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16276:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16254:46:5"},{"expression":{"id":1091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1087,"name":"paid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"16314:4:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1088,"name":"reservesNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"16321:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1089,"name":"reservesBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"16335:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16321:28:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16314:35:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1092,"nodeType":"ExpressionStatement","src":"16314:35:5"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1093,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"16363:16:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyReserves_$2252_$","typeString":"type(library CurrencyReserves)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16380:13:5","memberName":"resetCurrency","nodeType":"MemberAccess","referencedDeclaration":2234,"src":"16363:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16363:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1097,"nodeType":"ExpressionStatement","src":"16363:32:5"}]},"id":1099,"nodeType":"IfStatement","src":"15912:494:5","trueBody":{"id":1062,"nodeType":"Block","src":"15942:41:5","statements":[{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1057,"name":"paid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"15956:4:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1058,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15963:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15967:5:5","memberName":"value","nodeType":"MemberAccess","src":"15963:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15956:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"15956:16:5"}]}},{"expression":{"arguments":[{"id":1101,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"16430:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1102,"name":"paid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"16440:4:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16445:8:5","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"16440:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":1104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16440:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":1105,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1042,"src":"16457:9:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1100,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"16416:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_int128_$_t_address_$returns$__$","typeString":"function (Currency,int128,address)"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16416:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1107,"nodeType":"ExpressionStatement","src":"16416:51:5"}]},"id":1109,"implemented":true,"kind":"function","modifiers":[],"name":"_settle","nameLocation":"15658:7:5","nodeType":"FunctionDefinition","parameters":{"id":1043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1042,"mutability":"mutable","name":"recipient","nameLocation":"15674:9:5","nodeType":"VariableDeclaration","scope":1109,"src":"15666:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1041,"name":"address","nodeType":"ElementaryTypeName","src":"15666:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15665:19:5"},"returnParameters":{"id":1046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1045,"mutability":"mutable","name":"paid","nameLocation":"15711:4:5","nodeType":"VariableDeclaration","scope":1109,"src":"15703:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1044,"name":"uint256","nodeType":"ElementaryTypeName","src":"15703:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15702:14:5"},"scope":1216,"src":"15649:825:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1155,"nodeType":"Block","src":"16633:275:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1120,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"16647:5:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16656:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16647:10:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1124,"nodeType":"IfStatement","src":"16643:23:5","trueBody":{"functionReturnParameters":1119,"id":1123,"nodeType":"Return","src":"16659:7:5"}},{"assignments":[1126,1128],"declarations":[{"constant":false,"id":1126,"mutability":"mutable","name":"previous","nameLocation":"16684:8:5","nodeType":"VariableDeclaration","scope":1155,"src":"16677:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1125,"name":"int256","nodeType":"ElementaryTypeName","src":"16677:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1128,"mutability":"mutable","name":"next","nameLocation":"16701:4:5","nodeType":"VariableDeclaration","scope":1155,"src":"16694:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1127,"name":"int256","nodeType":"ElementaryTypeName","src":"16694:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1134,"initialValue":{"arguments":[{"id":1131,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"16729:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1132,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"16737:5:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":1129,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"16709:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16718:10:5","memberName":"applyDelta","nodeType":"MemberAccess","referencedDeclaration":2203,"src":"16709:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_address_$_t_int128_$returns$_t_int256_$_t_int256_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency,address,int128) returns (int256,int256)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16709:34:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"VariableDeclarationStatement","src":"16676:67:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1135,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1128,"src":"16758:4:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16766:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16758:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1144,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"16833:8:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16845:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16833:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1153,"nodeType":"IfStatement","src":"16829:73:5","trueBody":{"id":1152,"nodeType":"Block","src":"16848:54:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1147,"name":"NonzeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"16862:17:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_NonzeroDeltaCount_$3728_$","typeString":"type(library NonzeroDeltaCount)"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16880:9:5","memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":3721,"src":"16862:27:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16862:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1151,"nodeType":"ExpressionStatement","src":"16862:29:5"}]}},"id":1154,"nodeType":"IfStatement","src":"16754:148:5","trueBody":{"id":1143,"nodeType":"Block","src":"16769:54:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1138,"name":"NonzeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"16783:17:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_NonzeroDeltaCount_$3728_$","typeString":"type(library NonzeroDeltaCount)"}},"id":1140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16801:9:5","memberName":"decrement","nodeType":"MemberAccess","referencedDeclaration":3727,"src":"16783:27:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16783:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1142,"nodeType":"ExpressionStatement","src":"16783:29:5"}]}}]},"documentation":{"id":1110,"nodeType":"StructuredDocumentation","src":"16480:67:5","text":"@notice Adds a balance delta in a currency for a target address"},"id":1156,"implemented":true,"kind":"function","modifiers":[],"name":"_accountDelta","nameLocation":"16561:13:5","nodeType":"FunctionDefinition","parameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"currency","nameLocation":"16584:8:5","nodeType":"VariableDeclaration","scope":1156,"src":"16575:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":1112,"nodeType":"UserDefinedTypeName","pathNode":{"id":1111,"name":"Currency","nameLocations":["16575:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"16575:8:5"},"referencedDeclaration":6525,"src":"16575:8:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":1115,"mutability":"mutable","name":"delta","nameLocation":"16601:5:5","nodeType":"VariableDeclaration","scope":1156,"src":"16594:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1114,"name":"int128","nodeType":"ElementaryTypeName","src":"16594:6:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1117,"mutability":"mutable","name":"target","nameLocation":"16616:6:5","nodeType":"VariableDeclaration","scope":1156,"src":"16608:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1116,"name":"address","nodeType":"ElementaryTypeName","src":"16608:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16574:49:5"},"returnParameters":{"id":1119,"nodeType":"ParameterList","parameters":[],"src":"16633:0:5"},"scope":1216,"src":"16552:356:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1186,"nodeType":"Block","src":"17085:133:5","statements":[{"expression":{"arguments":[{"expression":{"id":1169,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"17109:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":1170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17113:9:5","memberName":"currency0","nodeType":"MemberAccess","referencedDeclaration":6856,"src":"17109:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1171,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"17124:5:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17130:7:5","memberName":"amount0","nodeType":"MemberAccess","referencedDeclaration":6458,"src":"17124:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (BalanceDelta) pure returns (int128)"}},"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17124:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":1174,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"17141:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1168,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"17095:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_int128_$_t_address_$returns$__$","typeString":"function (Currency,int128,address)"}},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17095:53:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1176,"nodeType":"ExpressionStatement","src":"17095:53:5"},{"expression":{"arguments":[{"expression":{"id":1178,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"17172:3:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":1179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17176:9:5","memberName":"currency1","nodeType":"MemberAccess","referencedDeclaration":6860,"src":"17172:13:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1180,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"17187:5:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17193:7:5","memberName":"amount1","nodeType":"MemberAccess","referencedDeclaration":6468,"src":"17187:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (BalanceDelta) pure returns (int128)"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17187:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":1183,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"17204:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1177,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"17158:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_int128_$_t_address_$returns$__$","typeString":"function (Currency,int128,address)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17158:53:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1185,"nodeType":"ExpressionStatement","src":"17158:53:5"}]},"documentation":{"id":1157,"nodeType":"StructuredDocumentation","src":"16914:67:5","text":"@notice Accounts the deltas of 2 currencies to a target address"},"id":1187,"implemented":true,"kind":"function","modifiers":[],"name":"_accountPoolBalanceDelta","nameLocation":"16995:24:5","nodeType":"FunctionDefinition","parameters":{"id":1166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1160,"mutability":"mutable","name":"key","nameLocation":"17035:3:5","nodeType":"VariableDeclaration","scope":1187,"src":"17020:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":1159,"nodeType":"UserDefinedTypeName","pathNode":{"id":1158,"name":"PoolKey","nameLocations":["17020:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"17020:7:5"},"referencedDeclaration":6871,"src":"17020:7:5","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1163,"mutability":"mutable","name":"delta","nameLocation":"17053:5:5","nodeType":"VariableDeclaration","scope":1187,"src":"17040:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1162,"nodeType":"UserDefinedTypeName","pathNode":{"id":1161,"name":"BalanceDelta","nameLocations":["17040:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"17040:12:5"},"referencedDeclaration":6311,"src":"17040:12:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":1165,"mutability":"mutable","name":"target","nameLocation":"17068:6:5","nodeType":"VariableDeclaration","scope":1187,"src":"17060:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1164,"name":"address","nodeType":"ElementaryTypeName","src":"17060:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17019:56:5"},"returnParameters":{"id":1167,"nodeType":"ParameterList","parameters":[],"src":"17085:0:5"},"scope":1216,"src":"16986:232:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1624],"body":{"id":1202,"nodeType":"Block","src":"17385:34:5","statements":[{"expression":{"baseExpression":{"id":1198,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"17402:6:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_PoolId_$6825_$_t_struct$_State_$3870_storage_$","typeString":"mapping(PoolId => struct Pool.State storage ref)"}},"id":1200,"indexExpression":{"id":1199,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"17409:2:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17402:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage","typeString":"struct Pool.State storage ref"}},"functionReturnParameters":1197,"id":1201,"nodeType":"Return","src":"17395:17:5"}]},"documentation":{"id":1188,"nodeType":"StructuredDocumentation","src":"17224:75:5","text":"@notice Implementation of the _getPool function defined in ProtocolFees"},"id":1203,"implemented":true,"kind":"function","modifiers":[],"name":"_getPool","nameLocation":"17313:8:5","nodeType":"FunctionDefinition","overrides":{"id":1193,"nodeType":"OverrideSpecifier","overrides":[],"src":"17347:8:5"},"parameters":{"id":1192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1191,"mutability":"mutable","name":"id","nameLocation":"17329:2:5","nodeType":"VariableDeclaration","scope":1203,"src":"17322:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1190,"nodeType":"UserDefinedTypeName","pathNode":{"id":1189,"name":"PoolId","nameLocations":["17322:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"17322:6:5"},"referencedDeclaration":6825,"src":"17322:6:5","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"src":"17321:11:5"},"returnParameters":{"id":1197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1196,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1203,"src":"17365:18:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":1195,"nodeType":"UserDefinedTypeName","pathNode":{"id":1194,"name":"Pool.State","nameLocations":["17365:4:5","17370:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"17365:10:5"},"referencedDeclaration":3870,"src":"17365:10:5","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"}],"src":"17364:20:5"},"scope":1216,"src":"17304:115:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[1614],"body":{"id":1214,"nodeType":"Block","src":"17569:41:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1210,"name":"Lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3703,"src":"17586:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Lock_$3703_$","typeString":"type(library Lock)"}},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17591:10:5","memberName":"isUnlocked","nodeType":"MemberAccess","referencedDeclaration":3702,"src":"17586:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17586:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1209,"id":1213,"nodeType":"Return","src":"17579:24:5"}]},"documentation":{"id":1204,"nodeType":"StructuredDocumentation","src":"17425:78:5","text":"@notice Implementation of the _isUnlocked function defined in ProtocolFees"},"id":1215,"implemented":true,"kind":"function","modifiers":[],"name":"_isUnlocked","nameLocation":"17517:11:5","nodeType":"FunctionDefinition","overrides":{"id":1206,"nodeType":"OverrideSpecifier","overrides":[],"src":"17545:8:5"},"parameters":{"id":1205,"nodeType":"ParameterList","parameters":[],"src":"17528:2:5"},"returnParameters":{"id":1209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1215,"src":"17563:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1207,"name":"bool","nodeType":"ElementaryTypeName","src":"17563:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17562:6:5"},"scope":1216,"src":"17508:102:5","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1217,"src":"4791:12821:5","usedErrors":[1372,1875,1878,1881,1884,1889,1894,1901,1904,1907,1910,1913,7260,7263,7266],"usedEvents":[1936,1952,1972,1984,7271,7279,7404,7466,7476,7488]}],"src":"37:17576:5"},"id":5},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ProtocolFees.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/ProtocolFees.sol","exportedSymbols":{"Currency":[6525],"CurrencyReserves":[2252],"CustomRevert":[2358],"IProtocolFees":[7323],"Owned":[7455],"Pool":[5409],"PoolId":[6825],"PoolKey":[6871],"ProtocolFeeLibrary":[7395],"ProtocolFees":[1641]},"id":1642,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1416,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:6"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","file":"./types/Currency.sol","id":1418,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":6820,"src":"57:46:6","symbolAliases":[{"foreign":{"id":1417,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"65:8:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyReserves.sol","file":"./libraries/CurrencyReserves.sol","id":1420,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":2253,"src":"104:66:6","symbolAliases":[{"foreign":{"id":1419,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"112:16:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IProtocolFees.sol","file":"./interfaces/IProtocolFees.sol","id":1422,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":7324,"src":"171:61:6","symbolAliases":[{"foreign":{"id":1421,"name":"IProtocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"179:13:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"./types/PoolKey.sol","id":1424,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":6872,"src":"233:44:6","symbolAliases":[{"foreign":{"id":1423,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"241:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ProtocolFeeLibrary.sol","file":"./libraries/ProtocolFeeLibrary.sol","id":1426,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":7396,"src":"278:70:6","symbolAliases":[{"foreign":{"id":1425,"name":"ProtocolFeeLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"286:18:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"v4-core/lib/solmate/src/auth/Owned.sol","file":"solmate/src/auth/Owned.sol","id":1428,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":7456,"src":"349:49:6","symbolAliases":[{"foreign":{"id":1427,"name":"Owned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7455,"src":"357:5:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol","file":"./types/PoolId.sol","id":1430,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":6840,"src":"399:42:6","symbolAliases":[{"foreign":{"id":1429,"name":"PoolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6825,"src":"407:6:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Pool.sol","file":"./libraries/Pool.sol","id":1432,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":5410,"src":"442:42:6","symbolAliases":[{"foreign":{"id":1431,"name":"Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"450:4:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./libraries/CustomRevert.sol","id":1434,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1642,"sourceUnit":2359,"src":"485:58:6","symbolAliases":[{"foreign":{"id":1433,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"493:12:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1436,"name":"IProtocolFees","nameLocations":["650:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":7323,"src":"650:13:6"},"id":1437,"nodeType":"InheritanceSpecifier","src":"650:13:6"},{"baseName":{"id":1438,"name":"Owned","nameLocations":["665:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":7455,"src":"665:5:6"},"id":1439,"nodeType":"InheritanceSpecifier","src":"665:5:6"}],"canonicalName":"ProtocolFees","contractDependencies":[],"contractKind":"contract","documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"545:71:6","text":"@notice Contract handling the setting and accrual of protocol fees"},"fullyImplemented":false,"id":1641,"linearizedBaseContracts":[1641,7455,7323],"name":"ProtocolFees","nameLocation":"634:12:6","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1442,"libraryName":{"id":1440,"name":"ProtocolFeeLibrary","nameLocations":["683:18:6"],"nodeType":"IdentifierPath","referencedDeclaration":7395,"src":"683:18:6"},"nodeType":"UsingForDirective","src":"677:36:6","typeName":{"id":1441,"name":"uint24","nodeType":"ElementaryTypeName","src":"706:6:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}},{"global":false,"id":1446,"libraryName":{"id":1443,"name":"Pool","nameLocations":["724:4:6"],"nodeType":"IdentifierPath","referencedDeclaration":5409,"src":"724:4:6"},"nodeType":"UsingForDirective","src":"718:26:6","typeName":{"id":1445,"nodeType":"UserDefinedTypeName","pathNode":{"id":1444,"name":"Pool.State","nameLocations":["733:4:6","738:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"733:10:6"},"referencedDeclaration":3870,"src":"733:10:6","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}}},{"global":false,"id":1449,"libraryName":{"id":1447,"name":"CustomRevert","nameLocations":["755:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"755:12:6"},"nodeType":"UsingForDirective","src":"749:30:6","typeName":{"id":1448,"name":"bytes4","nodeType":"ElementaryTypeName","src":"772:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"baseFunctions":[7288],"constant":false,"documentation":{"id":1450,"nodeType":"StructuredDocumentation","src":"785:29:6","text":"@inheritdoc IProtocolFees"},"functionSelector":"97e8cd4e","id":1455,"mutability":"mutable","name":"protocolFeesAccrued","nameLocation":"871:19:6","nodeType":"VariableDeclaration","scope":1641,"src":"819:71:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_Currency_$6525_$_t_uint256_$","typeString":"mapping(Currency => uint256)"},"typeName":{"id":1454,"keyName":"currency","keyNameLocation":"836:8:6","keyType":{"id":1452,"nodeType":"UserDefinedTypeName","pathNode":{"id":1451,"name":"Currency","nameLocations":["827:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"827:8:6"},"referencedDeclaration":6525,"src":"827:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"nodeType":"Mapping","src":"819:44:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_Currency_$6525_$_t_uint256_$","typeString":"mapping(Currency => uint256)"},"valueName":"amount","valueNameLocation":"856:6:6","valueType":{"id":1453,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"baseFunctions":[7322],"constant":false,"documentation":{"id":1456,"nodeType":"StructuredDocumentation","src":"897:29:6","text":"@inheritdoc IProtocolFees"},"functionSelector":"f02de3b2","id":1458,"mutability":"mutable","name":"protocolFeeController","nameLocation":"946:21:6","nodeType":"VariableDeclaration","scope":1641,"src":"931:36:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1457,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":1466,"nodeType":"Block","src":"1028:2:6","statements":[]},"id":1467,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1463,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"1014:12:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1464,"kind":"baseConstructorSpecifier","modifierName":{"id":1462,"name":"Owned","nameLocations":["1008:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":7455,"src":"1008:5:6"},"nodeType":"ModifierInvocation","src":"1008:19:6"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"initialOwner","nameLocation":"994:12:6","nodeType":"VariableDeclaration","scope":1467,"src":"986:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1459,"name":"address","nodeType":"ElementaryTypeName","src":"986:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"985:22:6"},"returnParameters":{"id":1465,"nodeType":"ParameterList","parameters":[],"src":"1028:0:6"},"scope":1641,"src":"974:56:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7303],"body":{"id":1483,"nodeType":"Block","src":"1143:106:6","statements":[{"expression":{"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1475,"name":"protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1153:21:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1476,"name":"controller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"1177:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1153:34:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1478,"nodeType":"ExpressionStatement","src":"1153:34:6"},{"eventCall":{"arguments":[{"id":1480,"name":"controller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"1231:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1479,"name":"ProtocolFeeControllerUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7271,"src":"1202:28:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1202:40:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1482,"nodeType":"EmitStatement","src":"1197:45:6"}]},"documentation":{"id":1468,"nodeType":"StructuredDocumentation","src":"1036:29:6","text":"@inheritdoc IProtocolFees"},"functionSelector":"2d771389","id":1484,"implemented":true,"kind":"function","modifiers":[{"id":1473,"kind":"modifierInvocation","modifierName":{"id":1472,"name":"onlyOwner","nameLocations":["1133:9:6"],"nodeType":"IdentifierPath","referencedDeclaration":7418,"src":"1133:9:6"},"nodeType":"ModifierInvocation","src":"1133:9:6"}],"name":"setProtocolFeeController","nameLocation":"1079:24:6","nodeType":"FunctionDefinition","parameters":{"id":1471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1470,"mutability":"mutable","name":"controller","nameLocation":"1112:10:6","nodeType":"VariableDeclaration","scope":1484,"src":"1104:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1469,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:20:6"},"returnParameters":{"id":1474,"nodeType":"ParameterList","parameters":[],"src":"1143:0:6"},"scope":1641,"src":"1070:179:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[7297],"body":{"id":1537,"nodeType":"Block","src":"1365:338:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1379:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1383:6:6","memberName":"sender","nodeType":"MemberAccess","src":"1379:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1495,"name":"protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1393:21:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1379:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1504,"nodeType":"IfStatement","src":"1375:76:6","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1497,"name":"InvalidCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7263,"src":"1416:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1430:8:6","memberName":"selector","nodeType":"MemberAccess","src":"1416:22:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1439:10:6","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"1416:33:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1416:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1503,"nodeType":"ExpressionStatement","src":"1416:35:6"}},{"condition":{"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1465:36:6","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1505,"name":"newProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"1466:14:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":1506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1481:18:6","memberName":"isValidProtocolFee","nodeType":"MemberAccess","referencedDeclaration":7382,"src":"1466:33:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1466:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1517,"nodeType":"IfStatement","src":"1461:97:6","trueBody":{"expression":{"arguments":[{"id":1514,"name":"newProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"1543:14:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"expression":{"id":1509,"name":"ProtocolFeeTooLarge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7260,"src":"1503:19:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint24_$returns$_t_error_$","typeString":"function (uint24) pure returns (error)"}},"id":1512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1523:8:6","memberName":"selector","nodeType":"MemberAccess","src":"1503:28:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1532:10:6","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2304,"src":"1503:39:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_uint160_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,uint160) pure"}},"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1516,"nodeType":"ExpressionStatement","src":"1503:55:6"}},{"assignments":[1520],"declarations":[{"constant":false,"id":1520,"mutability":"mutable","name":"id","nameLocation":"1575:2:6","nodeType":"VariableDeclaration","scope":1537,"src":"1568:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1519,"nodeType":"UserDefinedTypeName","pathNode":{"id":1518,"name":"PoolId","nameLocations":["1568:6:6"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"1568:6:6"},"referencedDeclaration":6825,"src":"1568:6:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"id":1524,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1521,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"1580:3:6","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":1522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1584:4:6","memberName":"toId","nodeType":"MemberAccess","referencedDeclaration":6838,"src":"1580:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolKey_$6871_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$6825_$attached_to$_t_struct$_PoolKey_$6871_memory_ptr_$","typeString":"function (struct PoolKey memory) pure returns (PoolId)"}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1580:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"nodeType":"VariableDeclarationStatement","src":"1568:22:6"},{"expression":{"arguments":[{"id":1529,"name":"newProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"1628:14:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"arguments":[{"id":1526,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"1609:2:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}],"id":1525,"name":"_getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1624,"src":"1600:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_PoolId_$6825_$returns$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (PoolId) returns (struct Pool.State storage pointer)"}},"id":1527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1600:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":1528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1613:14:6","memberName":"setProtocolFee","nodeType":"MemberAccess","referencedDeclaration":3997,"src":"1600:27:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_uint24_$returns$__$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer,uint24)"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1600:43:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1531,"nodeType":"ExpressionStatement","src":"1600:43:6"},{"eventCall":{"arguments":[{"id":1533,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"1677:2:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},{"id":1534,"name":"newProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"1681:14:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":1532,"name":"ProtocolFeeUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"1658:18:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_userDefinedValueType$_PoolId_$6825_$_t_uint24_$returns$__$","typeString":"function (PoolId,uint24)"}},"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1658:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1536,"nodeType":"EmitStatement","src":"1653:43:6"}]},"documentation":{"id":1485,"nodeType":"StructuredDocumentation","src":"1255:29:6","text":"@inheritdoc IProtocolFees"},"functionSelector":"7e87ce7d","id":1538,"implemented":true,"kind":"function","modifiers":[],"name":"setProtocolFee","nameLocation":"1298:14:6","nodeType":"FunctionDefinition","parameters":{"id":1491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"key","nameLocation":"1328:3:6","nodeType":"VariableDeclaration","scope":1538,"src":"1313:18:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":1487,"nodeType":"UserDefinedTypeName","pathNode":{"id":1486,"name":"PoolKey","nameLocations":["1313:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"1313:7:6"},"referencedDeclaration":6871,"src":"1313:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1490,"mutability":"mutable","name":"newProtocolFee","nameLocation":"1340:14:6","nodeType":"VariableDeclaration","scope":1538,"src":"1333:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1489,"name":"uint24","nodeType":"ElementaryTypeName","src":"1333:6:6","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1312:43:6"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[],"src":"1365:0:6"},"scope":1641,"src":"1289:414:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[7316],"body":{"id":1607,"nodeType":"Block","src":"1889:555:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1551,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1903:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1907:6:6","memberName":"sender","nodeType":"MemberAccess","src":"1903:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1553,"name":"protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1917:21:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1903:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1562,"nodeType":"IfStatement","src":"1899:76:6","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1555,"name":"InvalidCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7263,"src":"1940:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1954:8:6","memberName":"selector","nodeType":"MemberAccess","src":"1940:22:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1963:10:6","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"1940:33:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1940:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1561,"nodeType":"ExpressionStatement","src":"1940:35:6"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1989:25:6","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1563,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"1990:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1999:13:6","memberName":"isAddressZero","nodeType":"MemberAccess","referencedDeclaration":6781,"src":"1990:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (bool)"}},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1990:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"function":6558,"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1567,"name":"CurrencyReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"2018:16:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurrencyReserves_$2252_$","typeString":"type(library CurrencyReserves)"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2035:17:6","memberName":"getSyncedCurrency","nodeType":"MemberAccess","referencedDeclaration":2229,"src":"2018:34:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function () view returns (Currency)"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2018:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1570,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"2058:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"src":"2018:48:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1989:77:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1581,"nodeType":"IfStatement","src":"1985:257:6","trueBody":{"id":1580,"nodeType":"Block","src":"2068:174:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1573,"name":"ProtocolFeeCurrencySynced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7266,"src":"2184:25:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2210:8:6","memberName":"selector","nodeType":"MemberAccess","src":"2184:34:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2219:10:6","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"2184:45:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":1578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2184:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1579,"nodeType":"ExpressionStatement","src":"2184:47:6"}]}},{"expression":{"id":1592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1582,"name":"amountCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1549,"src":"2252:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1583,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1546,"src":"2271:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2281:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2271:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1586,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2270:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1590,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1546,"src":"2318:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2270:54:6","trueExpression":{"baseExpression":{"id":1587,"name":"protocolFeesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2286:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_Currency_$6525_$_t_uint256_$","typeString":"mapping(Currency => uint256)"}},"id":1589,"indexExpression":{"id":1588,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"2306:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2286:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2252:72:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1593,"nodeType":"ExpressionStatement","src":"2252:72:6"},{"expression":{"id":1598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1594,"name":"protocolFeesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2334:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_Currency_$6525_$_t_uint256_$","typeString":"mapping(Currency => uint256)"}},"id":1596,"indexExpression":{"id":1595,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"2354:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2334:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":1597,"name":"amountCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1549,"src":"2367:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2334:48:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1599,"nodeType":"ExpressionStatement","src":"2334:48:6"},{"expression":{"arguments":[{"id":1603,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"2410:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1604,"name":"amountCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1549,"src":"2421:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1600,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"2392:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2401:8:6","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":6698,"src":"2392:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$6525_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency,address,uint256)"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2392:45:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1606,"nodeType":"ExpressionStatement","src":"2392:45:6"}]},"documentation":{"id":1539,"nodeType":"StructuredDocumentation","src":"1709:29:6","text":"@inheritdoc IProtocolFees"},"functionSelector":"8161b874","id":1608,"implemented":true,"kind":"function","modifiers":[],"name":"collectProtocolFees","nameLocation":"1752:19:6","nodeType":"FunctionDefinition","parameters":{"id":1547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"recipient","nameLocation":"1780:9:6","nodeType":"VariableDeclaration","scope":1608,"src":"1772:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1540,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1544,"mutability":"mutable","name":"currency","nameLocation":"1800:8:6","nodeType":"VariableDeclaration","scope":1608,"src":"1791:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":1543,"nodeType":"UserDefinedTypeName","pathNode":{"id":1542,"name":"Currency","nameLocations":["1791:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"1791:8:6"},"referencedDeclaration":6525,"src":"1791:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":1546,"mutability":"mutable","name":"amount","nameLocation":"1818:6:6","nodeType":"VariableDeclaration","scope":1608,"src":"1810:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1545,"name":"uint256","nodeType":"ElementaryTypeName","src":"1810:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1771:54:6"},"returnParameters":{"id":1550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1549,"mutability":"mutable","name":"amountCollected","nameLocation":"1868:15:6","nodeType":"VariableDeclaration","scope":1608,"src":"1860:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1548,"name":"uint256","nodeType":"ElementaryTypeName","src":"1860:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1859:25:6"},"scope":1641,"src":"1743:701:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1609,"nodeType":"StructuredDocumentation","src":"2450:89:6","text":"@dev abstract internal function to allow the ProtocolFees contract to access the lock"},"id":1614,"implemented":false,"kind":"function","modifiers":[],"name":"_isUnlocked","nameLocation":"2553:11:6","nodeType":"FunctionDefinition","parameters":{"id":1610,"nodeType":"ParameterList","parameters":[],"src":"2564:2:6"},"returnParameters":{"id":1613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1612,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1614,"src":"2593:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1611,"name":"bool","nodeType":"ElementaryTypeName","src":"2593:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2592:6:6"},"scope":1641,"src":"2544:55:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":1615,"nodeType":"StructuredDocumentation","src":"2605:179:6","text":"@dev abstract internal function to allow the ProtocolFees contract to access pool state\n @dev this is overridden in PoolManager.sol to give access to the _pools mapping"},"id":1624,"implemented":false,"kind":"function","modifiers":[],"name":"_getPool","nameLocation":"2798:8:6","nodeType":"FunctionDefinition","parameters":{"id":1619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1618,"mutability":"mutable","name":"id","nameLocation":"2814:2:6","nodeType":"VariableDeclaration","scope":1624,"src":"2807:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1617,"nodeType":"UserDefinedTypeName","pathNode":{"id":1616,"name":"PoolId","nameLocations":["2807:6:6"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"2807:6:6"},"referencedDeclaration":6825,"src":"2807:6:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"src":"2806:11:6"},"returnParameters":{"id":1623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1624,"src":"2844:18:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":1621,"nodeType":"UserDefinedTypeName","pathNode":{"id":1620,"name":"Pool.State","nameLocations":["2844:4:6","2849:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"2844:10:6"},"referencedDeclaration":3870,"src":"2844:10:6","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"}],"src":"2843:20:6"},"scope":1641,"src":"2789:75:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1639,"nodeType":"Block","src":"2943:90:6","statements":[{"id":1638,"nodeType":"UncheckedBlock","src":"2953:74:6","statements":[{"expression":{"id":1636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1632,"name":"protocolFeesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2977:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_Currency_$6525_$_t_uint256_$","typeString":"mapping(Currency => uint256)"}},"id":1634,"indexExpression":{"id":1633,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1627,"src":"2997:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2977:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1635,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"3010:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2977:39:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1637,"nodeType":"ExpressionStatement","src":"2977:39:6"}]}]},"id":1640,"implemented":true,"kind":"function","modifiers":[],"name":"_updateProtocolFees","nameLocation":"2879:19:6","nodeType":"FunctionDefinition","parameters":{"id":1630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1627,"mutability":"mutable","name":"currency","nameLocation":"2908:8:6","nodeType":"VariableDeclaration","scope":1640,"src":"2899:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":1626,"nodeType":"UserDefinedTypeName","pathNode":{"id":1625,"name":"Currency","nameLocations":["2899:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"2899:8:6"},"referencedDeclaration":6525,"src":"2899:8:6","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":1629,"mutability":"mutable","name":"amount","nameLocation":"2926:6:6","nodeType":"VariableDeclaration","scope":1640,"src":"2918:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1628,"name":"uint256","nodeType":"ElementaryTypeName","src":"2918:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2898:35:6"},"returnParameters":{"id":1631,"nodeType":"ParameterList","parameters":[],"src":"2943:0:6"},"scope":1641,"src":"2870:163:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1642,"src":"616:2419:6","usedErrors":[7260,7263,7266],"usedEvents":[7271,7279,7404]}],"src":"32:3004:6"},"id":6},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExtsload.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExtsload.sol","exportedSymbols":{"IExtsload":[7224]},"id":7225,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7193,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IExtsload","contractDependencies":[],"contractKind":"interface","documentation":{"id":7194,"nodeType":"StructuredDocumentation","src":"57:77:7","text":"@notice Interface for functions to access any storage slot in a contract"},"fullyImplemented":false,"id":7224,"linearizedBaseContracts":[7224],"name":"IExtsload","nameLocation":"144:9:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7195,"nodeType":"StructuredDocumentation","src":"160:166:7","text":"@notice Called by external contracts to access granular pool state\n @param slot Key of slot to sload\n @return value The value of the slot as bytes32"},"functionSelector":"1e2eaeaf","id":7202,"implemented":false,"kind":"function","modifiers":[],"name":"extsload","nameLocation":"340:8:7","nodeType":"FunctionDefinition","parameters":{"id":7198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7197,"mutability":"mutable","name":"slot","nameLocation":"357:4:7","nodeType":"VariableDeclaration","scope":7202,"src":"349:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7196,"name":"bytes32","nodeType":"ElementaryTypeName","src":"349:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"348:14:7"},"returnParameters":{"id":7201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7200,"mutability":"mutable","name":"value","nameLocation":"394:5:7","nodeType":"VariableDeclaration","scope":7202,"src":"386:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"386:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"385:15:7"},"scope":7224,"src":"331:70:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7203,"nodeType":"StructuredDocumentation","src":"407:240:7","text":"@notice Called by external contracts to access granular pool state\n @param startSlot Key of slot to start sloading from\n @param nSlots Number of slots to load into return value\n @return values List of loaded values."},"functionSelector":"35fd631a","id":7213,"implemented":false,"kind":"function","modifiers":[],"name":"extsload","nameLocation":"661:8:7","nodeType":"FunctionDefinition","parameters":{"id":7208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7205,"mutability":"mutable","name":"startSlot","nameLocation":"678:9:7","nodeType":"VariableDeclaration","scope":7213,"src":"670:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"670:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7207,"mutability":"mutable","name":"nSlots","nameLocation":"697:6:7","nodeType":"VariableDeclaration","scope":7213,"src":"689:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7206,"name":"uint256","nodeType":"ElementaryTypeName","src":"689:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"669:35:7"},"returnParameters":{"id":7212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7211,"mutability":"mutable","name":"values","nameLocation":"745:6:7","nodeType":"VariableDeclaration","scope":7213,"src":"728:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7209,"name":"bytes32","nodeType":"ElementaryTypeName","src":"728:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7210,"nodeType":"ArrayTypeName","src":"728:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"727:25:7"},"scope":7224,"src":"652:101:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7214,"nodeType":"StructuredDocumentation","src":"759:164:7","text":"@notice Called by external contracts to access sparse pool state\n @param slots List of slots to SLOAD from.\n @return values List of loaded values."},"functionSelector":"dbd035ff","id":7223,"implemented":false,"kind":"function","modifiers":[],"name":"extsload","nameLocation":"937:8:7","nodeType":"FunctionDefinition","parameters":{"id":7218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7217,"mutability":"mutable","name":"slots","nameLocation":"965:5:7","nodeType":"VariableDeclaration","scope":7223,"src":"946:24:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"946:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7216,"nodeType":"ArrayTypeName","src":"946:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"945:26:7"},"returnParameters":{"id":7222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7221,"mutability":"mutable","name":"values","nameLocation":"1012:6:7","nodeType":"VariableDeclaration","scope":7223,"src":"995:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7219,"name":"bytes32","nodeType":"ElementaryTypeName","src":"995:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7220,"nodeType":"ArrayTypeName","src":"995:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"994:25:7"},"scope":7224,"src":"928:92:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7225,"src":"134:888:7","usedErrors":[],"usedEvents":[]}],"src":"32:991:7"},"id":7},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExttload.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExttload.sol","exportedSymbols":{"IExttload":[7246]},"id":7247,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7226,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IExttload","contractDependencies":[],"contractKind":"interface","documentation":{"id":7227,"nodeType":"StructuredDocumentation","src":"58:87:8","text":"@notice Interface for functions to access any transient storage slot in a contract"},"fullyImplemented":false,"id":7246,"linearizedBaseContracts":[7246],"name":"IExttload","nameLocation":"155:9:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7228,"nodeType":"StructuredDocumentation","src":"171:180:8","text":"@notice Called by external contracts to access transient storage of the contract\n @param slot Key of slot to tload\n @return value The value of the slot as bytes32"},"functionSelector":"f135baaa","id":7235,"implemented":false,"kind":"function","modifiers":[],"name":"exttload","nameLocation":"365:8:8","nodeType":"FunctionDefinition","parameters":{"id":7231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7230,"mutability":"mutable","name":"slot","nameLocation":"382:4:8","nodeType":"VariableDeclaration","scope":7235,"src":"374:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7229,"name":"bytes32","nodeType":"ElementaryTypeName","src":"374:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"373:14:8"},"returnParameters":{"id":7234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7233,"mutability":"mutable","name":"value","nameLocation":"419:5:8","nodeType":"VariableDeclaration","scope":7235,"src":"411:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7232,"name":"bytes32","nodeType":"ElementaryTypeName","src":"411:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"410:15:8"},"scope":7246,"src":"356:70:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7236,"nodeType":"StructuredDocumentation","src":"432:167:8","text":"@notice Called by external contracts to access sparse transient pool state\n @param slots List of slots to tload\n @return values List of loaded values"},"functionSelector":"9bf6645f","id":7245,"implemented":false,"kind":"function","modifiers":[],"name":"exttload","nameLocation":"613:8:8","nodeType":"FunctionDefinition","parameters":{"id":7240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7239,"mutability":"mutable","name":"slots","nameLocation":"641:5:8","nodeType":"VariableDeclaration","scope":7245,"src":"622:24:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"622:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7238,"nodeType":"ArrayTypeName","src":"622:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"621:26:8"},"returnParameters":{"id":7244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7243,"mutability":"mutable","name":"values","nameLocation":"688:6:8","nodeType":"VariableDeclaration","scope":7245,"src":"671:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7241,"name":"bytes32","nodeType":"ElementaryTypeName","src":"671:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7242,"nodeType":"ArrayTypeName","src":"671:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"670:25:8"},"scope":7246,"src":"604:92:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7247,"src":"145:553:8","usedErrors":[],"usedEvents":[]}],"src":"32:667:8"},"id":8},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IHooks.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IHooks.sol","exportedSymbols":{"BalanceDelta":[6311],"BeforeSwapDelta":[6473],"IHooks":[1840],"ModifyLiquidityParams":[6887],"PoolKey":[6871],"SwapParams":[6898]},"id":1841,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1643,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:9"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"../types/PoolKey.sol","id":1645,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":6872,"src":"57:45:9","symbolAliases":[{"foreign":{"id":1644,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"65:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol","file":"../types/BalanceDelta.sol","id":1647,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":6470,"src":"103:55:9","symbolAliases":[{"foreign":{"id":1646,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"111:12:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolOperation.sol","file":"../types/PoolOperation.sol","id":1650,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":6899,"src":"159:77:9","symbolAliases":[{"foreign":{"id":1648,"name":"ModifyLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6887,"src":"167:21:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1649,"name":"SwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"190:10:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BeforeSwapDelta.sol","file":"../types/BeforeSwapDelta.sol","id":1652,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":6518,"src":"237:61:9","symbolAliases":[{"foreign":{"id":1651,"name":"BeforeSwapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"245:15:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IHooks","contractDependencies":[],"contractKind":"interface","documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"300:485:9","text":"@notice V4 decides whether to invoke specific hooks by inspecting the least significant bits\n of the address that the hooks contract is deployed to.\n For example, a hooks contract deployed to address: 0x0000000000000000000000000000000000002400\n has the lowest bits '10 0100 0000 0000' which would cause the 'before initialize' and 'after add liquidity' hooks to be used.\n See the Hooks library for the full spec.\n @dev Should only be callable by the v4 PoolManager."},"fullyImplemented":false,"id":1840,"linearizedBaseContracts":[1840],"name":"IHooks","nameLocation":"795:6:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1654,"nodeType":"StructuredDocumentation","src":"808:322:9","text":"@notice The hook called before the state of a pool is initialized\n @param sender The initial msg.sender for the initialize call\n @param key The key for the pool being initialized\n @param sqrtPriceX96 The sqrt(price) of the pool as a Q64.96\n @return bytes4 The function selector for the hook"},"functionSelector":"dc98354e","id":1666,"implemented":false,"kind":"function","modifiers":[],"name":"beforeInitialize","nameLocation":"1144:16:9","nodeType":"FunctionDefinition","parameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"sender","nameLocation":"1169:6:9","nodeType":"VariableDeclaration","scope":1666,"src":"1161:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1655,"name":"address","nodeType":"ElementaryTypeName","src":"1161:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1659,"mutability":"mutable","name":"key","nameLocation":"1194:3:9","nodeType":"VariableDeclaration","scope":1666,"src":"1177:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1658,"nodeType":"UserDefinedTypeName","pathNode":{"id":1657,"name":"PoolKey","nameLocations":["1177:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"1177:7:9"},"referencedDeclaration":6871,"src":"1177:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1661,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"1207:12:9","nodeType":"VariableDeclaration","scope":1666,"src":"1199:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1660,"name":"uint160","nodeType":"ElementaryTypeName","src":"1199:7:9","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1160:60:9"},"returnParameters":{"id":1665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1666,"src":"1239:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1663,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1239:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1238:8:9"},"scope":1840,"src":"1135:112:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1667,"nodeType":"StructuredDocumentation","src":"1253:399:9","text":"@notice The hook called after the state of a pool is initialized\n @param sender The initial msg.sender for the initialize call\n @param key The key for the pool being initialized\n @param sqrtPriceX96 The sqrt(price) of the pool as a Q64.96\n @param tick The current tick after the state of a pool is initialized\n @return bytes4 The function selector for the hook"},"functionSelector":"6fe7e6eb","id":1681,"implemented":false,"kind":"function","modifiers":[],"name":"afterInitialize","nameLocation":"1666:15:9","nodeType":"FunctionDefinition","parameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1669,"mutability":"mutable","name":"sender","nameLocation":"1690:6:9","nodeType":"VariableDeclaration","scope":1681,"src":"1682:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1668,"name":"address","nodeType":"ElementaryTypeName","src":"1682:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1672,"mutability":"mutable","name":"key","nameLocation":"1715:3:9","nodeType":"VariableDeclaration","scope":1681,"src":"1698:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1671,"nodeType":"UserDefinedTypeName","pathNode":{"id":1670,"name":"PoolKey","nameLocations":["1698:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"1698:7:9"},"referencedDeclaration":6871,"src":"1698:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1674,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"1728:12:9","nodeType":"VariableDeclaration","scope":1681,"src":"1720:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1673,"name":"uint160","nodeType":"ElementaryTypeName","src":"1720:7:9","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1676,"mutability":"mutable","name":"tick","nameLocation":"1748:4:9","nodeType":"VariableDeclaration","scope":1681,"src":"1742:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1675,"name":"int24","nodeType":"ElementaryTypeName","src":"1742:5:9","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1681:72:9"},"returnParameters":{"id":1680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1681,"src":"1788:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1678,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1788:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1787:8:9"},"scope":1840,"src":"1657:139:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1682,"nodeType":"StructuredDocumentation","src":"1802:402:9","text":"@notice The hook called before liquidity is added\n @param sender The initial msg.sender for the add liquidity call\n @param key The key for the pool\n @param params The parameters for adding liquidity\n @param hookData Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook\n @return bytes4 The function selector for the hook"},"functionSelector":"259982e5","id":1697,"implemented":false,"kind":"function","modifiers":[],"name":"beforeAddLiquidity","nameLocation":"2218:18:9","nodeType":"FunctionDefinition","parameters":{"id":1693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1684,"mutability":"mutable","name":"sender","nameLocation":"2254:6:9","nodeType":"VariableDeclaration","scope":1697,"src":"2246:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"2246:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"key","nameLocation":"2287:3:9","nodeType":"VariableDeclaration","scope":1697,"src":"2270:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1686,"nodeType":"UserDefinedTypeName","pathNode":{"id":1685,"name":"PoolKey","nameLocations":["2270:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"2270:7:9"},"referencedDeclaration":6871,"src":"2270:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1690,"mutability":"mutable","name":"params","nameLocation":"2331:6:9","nodeType":"VariableDeclaration","scope":1697,"src":"2300:37:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_calldata_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":1689,"nodeType":"UserDefinedTypeName","pathNode":{"id":1688,"name":"ModifyLiquidityParams","nameLocations":["2300:21:9"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"2300:21:9"},"referencedDeclaration":6887,"src":"2300:21:9","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":1692,"mutability":"mutable","name":"hookData","nameLocation":"2362:8:9","nodeType":"VariableDeclaration","scope":1697,"src":"2347:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1691,"name":"bytes","nodeType":"ElementaryTypeName","src":"2347:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2236:140:9"},"returnParameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1697,"src":"2395:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1694,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2395:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2394:8:9"},"scope":1840,"src":"2209:194:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1698,"nodeType":"StructuredDocumentation","src":"2409:781:9","text":"@notice The hook called after liquidity is added\n @param sender The initial msg.sender for the add liquidity call\n @param key The key for the pool\n @param params The parameters for adding liquidity\n @param delta The caller's balance delta after adding liquidity; the sum of principal delta, fees accrued, and hook delta\n @param feesAccrued The fees accrued since the last time fees were collected from this position\n @param hookData Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook\n @return bytes4 The function selector for the hook\n @return BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency"},"functionSelector":"9f063efc","id":1722,"implemented":false,"kind":"function","modifiers":[],"name":"afterAddLiquidity","nameLocation":"3204:17:9","nodeType":"FunctionDefinition","parameters":{"id":1715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1700,"mutability":"mutable","name":"sender","nameLocation":"3239:6:9","nodeType":"VariableDeclaration","scope":1722,"src":"3231:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1699,"name":"address","nodeType":"ElementaryTypeName","src":"3231:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1703,"mutability":"mutable","name":"key","nameLocation":"3272:3:9","nodeType":"VariableDeclaration","scope":1722,"src":"3255:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1702,"nodeType":"UserDefinedTypeName","pathNode":{"id":1701,"name":"PoolKey","nameLocations":["3255:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"3255:7:9"},"referencedDeclaration":6871,"src":"3255:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1706,"mutability":"mutable","name":"params","nameLocation":"3316:6:9","nodeType":"VariableDeclaration","scope":1722,"src":"3285:37:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_calldata_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":1705,"nodeType":"UserDefinedTypeName","pathNode":{"id":1704,"name":"ModifyLiquidityParams","nameLocations":["3285:21:9"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"3285:21:9"},"referencedDeclaration":6887,"src":"3285:21:9","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"delta","nameLocation":"3345:5:9","nodeType":"VariableDeclaration","scope":1722,"src":"3332:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1708,"nodeType":"UserDefinedTypeName","pathNode":{"id":1707,"name":"BalanceDelta","nameLocations":["3332:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"3332:12:9"},"referencedDeclaration":6311,"src":"3332:12:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":1712,"mutability":"mutable","name":"feesAccrued","nameLocation":"3373:11:9","nodeType":"VariableDeclaration","scope":1722,"src":"3360:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1711,"nodeType":"UserDefinedTypeName","pathNode":{"id":1710,"name":"BalanceDelta","nameLocations":["3360:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"3360:12:9"},"referencedDeclaration":6311,"src":"3360:12:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":1714,"mutability":"mutable","name":"hookData","nameLocation":"3409:8:9","nodeType":"VariableDeclaration","scope":1722,"src":"3394:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1713,"name":"bytes","nodeType":"ElementaryTypeName","src":"3394:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3221:202:9"},"returnParameters":{"id":1721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1722,"src":"3442:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1716,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3442:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":1720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1722,"src":"3450:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1719,"nodeType":"UserDefinedTypeName","pathNode":{"id":1718,"name":"BalanceDelta","nameLocations":["3450:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"3450:12:9"},"referencedDeclaration":6311,"src":"3450:12:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"3441:22:9"},"scope":1840,"src":"3195:269:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1723,"nodeType":"StructuredDocumentation","src":"3470:412:9","text":"@notice The hook called before liquidity is removed\n @param sender The initial msg.sender for the remove liquidity call\n @param key The key for the pool\n @param params The parameters for removing liquidity\n @param hookData Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook\n @return bytes4 The function selector for the hook"},"functionSelector":"21d0ee70","id":1738,"implemented":false,"kind":"function","modifiers":[],"name":"beforeRemoveLiquidity","nameLocation":"3896:21:9","nodeType":"FunctionDefinition","parameters":{"id":1734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1725,"mutability":"mutable","name":"sender","nameLocation":"3935:6:9","nodeType":"VariableDeclaration","scope":1738,"src":"3927:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1724,"name":"address","nodeType":"ElementaryTypeName","src":"3927:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1728,"mutability":"mutable","name":"key","nameLocation":"3968:3:9","nodeType":"VariableDeclaration","scope":1738,"src":"3951:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1727,"nodeType":"UserDefinedTypeName","pathNode":{"id":1726,"name":"PoolKey","nameLocations":["3951:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"3951:7:9"},"referencedDeclaration":6871,"src":"3951:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1731,"mutability":"mutable","name":"params","nameLocation":"4012:6:9","nodeType":"VariableDeclaration","scope":1738,"src":"3981:37:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_calldata_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":1730,"nodeType":"UserDefinedTypeName","pathNode":{"id":1729,"name":"ModifyLiquidityParams","nameLocations":["3981:21:9"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"3981:21:9"},"referencedDeclaration":6887,"src":"3981:21:9","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":1733,"mutability":"mutable","name":"hookData","nameLocation":"4043:8:9","nodeType":"VariableDeclaration","scope":1738,"src":"4028:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1732,"name":"bytes","nodeType":"ElementaryTypeName","src":"4028:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3917:140:9"},"returnParameters":{"id":1737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1738,"src":"4076:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1735,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4076:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4075:8:9"},"scope":1840,"src":"3887:197:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1739,"nodeType":"StructuredDocumentation","src":"4090:793:9","text":"@notice The hook called after liquidity is removed\n @param sender The initial msg.sender for the remove liquidity call\n @param key The key for the pool\n @param params The parameters for removing liquidity\n @param delta The caller's balance delta after removing liquidity; the sum of principal delta, fees accrued, and hook delta\n @param feesAccrued The fees accrued since the last time fees were collected from this position\n @param hookData Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook\n @return bytes4 The function selector for the hook\n @return BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency"},"functionSelector":"6c2bbe7e","id":1763,"implemented":false,"kind":"function","modifiers":[],"name":"afterRemoveLiquidity","nameLocation":"4897:20:9","nodeType":"FunctionDefinition","parameters":{"id":1756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1741,"mutability":"mutable","name":"sender","nameLocation":"4935:6:9","nodeType":"VariableDeclaration","scope":1763,"src":"4927:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1740,"name":"address","nodeType":"ElementaryTypeName","src":"4927:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1744,"mutability":"mutable","name":"key","nameLocation":"4968:3:9","nodeType":"VariableDeclaration","scope":1763,"src":"4951:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1743,"nodeType":"UserDefinedTypeName","pathNode":{"id":1742,"name":"PoolKey","nameLocations":["4951:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"4951:7:9"},"referencedDeclaration":6871,"src":"4951:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"params","nameLocation":"5012:6:9","nodeType":"VariableDeclaration","scope":1763,"src":"4981:37:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_calldata_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":1746,"nodeType":"UserDefinedTypeName","pathNode":{"id":1745,"name":"ModifyLiquidityParams","nameLocations":["4981:21:9"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"4981:21:9"},"referencedDeclaration":6887,"src":"4981:21:9","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":1750,"mutability":"mutable","name":"delta","nameLocation":"5041:5:9","nodeType":"VariableDeclaration","scope":1763,"src":"5028:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1749,"nodeType":"UserDefinedTypeName","pathNode":{"id":1748,"name":"BalanceDelta","nameLocations":["5028:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"5028:12:9"},"referencedDeclaration":6311,"src":"5028:12:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":1753,"mutability":"mutable","name":"feesAccrued","nameLocation":"5069:11:9","nodeType":"VariableDeclaration","scope":1763,"src":"5056:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1752,"nodeType":"UserDefinedTypeName","pathNode":{"id":1751,"name":"BalanceDelta","nameLocations":["5056:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"5056:12:9"},"referencedDeclaration":6311,"src":"5056:12:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":1755,"mutability":"mutable","name":"hookData","nameLocation":"5105:8:9","nodeType":"VariableDeclaration","scope":1763,"src":"5090:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1754,"name":"bytes","nodeType":"ElementaryTypeName","src":"5090:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4917:202:9"},"returnParameters":{"id":1762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1763,"src":"5138:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1757,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5138:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":1761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1763,"src":"5146:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1760,"nodeType":"UserDefinedTypeName","pathNode":{"id":1759,"name":"BalanceDelta","nameLocations":["5146:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"5146:12:9"},"referencedDeclaration":6311,"src":"5146:12:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"5137:22:9"},"scope":1840,"src":"4888:272:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1764,"nodeType":"StructuredDocumentation","src":"5166:790:9","text":"@notice The hook called before a swap\n @param sender The initial msg.sender for the swap call\n @param key The key for the pool\n @param params The parameters for the swap\n @param hookData Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook\n @return bytes4 The function selector for the hook\n @return BeforeSwapDelta The hook's delta in specified and unspecified currencies. Positive: the hook is owed/took currency, negative: the hook owes/sent currency\n @return uint24 Optionally override the lp fee, only used if three conditions are met: 1. the Pool has a dynamic fee, 2. the value's 2nd highest bit is set (23rd bit, 0x400000), and 3. the value is less than or equal to the maximum fee (1 million)"},"functionSelector":"575e24b4","id":1784,"implemented":false,"kind":"function","modifiers":[],"name":"beforeSwap","nameLocation":"5970:10:9","nodeType":"FunctionDefinition","parameters":{"id":1775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1766,"mutability":"mutable","name":"sender","nameLocation":"5989:6:9","nodeType":"VariableDeclaration","scope":1784,"src":"5981:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1765,"name":"address","nodeType":"ElementaryTypeName","src":"5981:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1769,"mutability":"mutable","name":"key","nameLocation":"6014:3:9","nodeType":"VariableDeclaration","scope":1784,"src":"5997:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1768,"nodeType":"UserDefinedTypeName","pathNode":{"id":1767,"name":"PoolKey","nameLocations":["5997:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"5997:7:9"},"referencedDeclaration":6871,"src":"5997:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1772,"mutability":"mutable","name":"params","nameLocation":"6039:6:9","nodeType":"VariableDeclaration","scope":1784,"src":"6019:26:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_calldata_ptr","typeString":"struct SwapParams"},"typeName":{"id":1771,"nodeType":"UserDefinedTypeName","pathNode":{"id":1770,"name":"SwapParams","nameLocations":["6019:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":6898,"src":"6019:10:9"},"referencedDeclaration":6898,"src":"6019:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_storage_ptr","typeString":"struct SwapParams"}},"visibility":"internal"},{"constant":false,"id":1774,"mutability":"mutable","name":"hookData","nameLocation":"6062:8:9","nodeType":"VariableDeclaration","scope":1784,"src":"6047:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1773,"name":"bytes","nodeType":"ElementaryTypeName","src":"6047:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5980:91:9"},"returnParameters":{"id":1783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1784,"src":"6106:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1776,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6106:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":1780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1784,"src":"6114:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":1779,"nodeType":"UserDefinedTypeName","pathNode":{"id":1778,"name":"BeforeSwapDelta","nameLocations":["6114:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"6114:15:9"},"referencedDeclaration":6473,"src":"6114:15:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"internal"},{"constant":false,"id":1782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1784,"src":"6131:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1781,"name":"uint24","nodeType":"ElementaryTypeName","src":"6131:6:9","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"6105:33:9"},"scope":1840,"src":"5961:178:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1785,"nodeType":"StructuredDocumentation","src":"6145:602:9","text":"@notice The hook called after a swap\n @param sender The initial msg.sender for the swap call\n @param key The key for the pool\n @param params The parameters for the swap\n @param delta The amount owed to the caller (positive) or owed to the pool (negative)\n @param hookData Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook\n @return bytes4 The function selector for the hook\n @return int128 The hook's delta in unspecified currency. Positive: the hook is owed/took currency, negative: the hook owes/sent currency"},"functionSelector":"b47b2fb1","id":1805,"implemented":false,"kind":"function","modifiers":[],"name":"afterSwap","nameLocation":"6761:9:9","nodeType":"FunctionDefinition","parameters":{"id":1799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1787,"mutability":"mutable","name":"sender","nameLocation":"6788:6:9","nodeType":"VariableDeclaration","scope":1805,"src":"6780:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1786,"name":"address","nodeType":"ElementaryTypeName","src":"6780:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1790,"mutability":"mutable","name":"key","nameLocation":"6821:3:9","nodeType":"VariableDeclaration","scope":1805,"src":"6804:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1789,"nodeType":"UserDefinedTypeName","pathNode":{"id":1788,"name":"PoolKey","nameLocations":["6804:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"6804:7:9"},"referencedDeclaration":6871,"src":"6804:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1793,"mutability":"mutable","name":"params","nameLocation":"6854:6:9","nodeType":"VariableDeclaration","scope":1805,"src":"6834:26:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_calldata_ptr","typeString":"struct SwapParams"},"typeName":{"id":1792,"nodeType":"UserDefinedTypeName","pathNode":{"id":1791,"name":"SwapParams","nameLocations":["6834:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":6898,"src":"6834:10:9"},"referencedDeclaration":6898,"src":"6834:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_storage_ptr","typeString":"struct SwapParams"}},"visibility":"internal"},{"constant":false,"id":1796,"mutability":"mutable","name":"delta","nameLocation":"6883:5:9","nodeType":"VariableDeclaration","scope":1805,"src":"6870:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":1795,"nodeType":"UserDefinedTypeName","pathNode":{"id":1794,"name":"BalanceDelta","nameLocations":["6870:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"6870:12:9"},"referencedDeclaration":6311,"src":"6870:12:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":1798,"mutability":"mutable","name":"hookData","nameLocation":"6913:8:9","nodeType":"VariableDeclaration","scope":1805,"src":"6898:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1797,"name":"bytes","nodeType":"ElementaryTypeName","src":"6898:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6770:157:9"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1805,"src":"6946:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1800,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6946:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":1803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1805,"src":"6954:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1802,"name":"int128","nodeType":"ElementaryTypeName","src":"6954:6:9","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"6945:16:9"},"scope":1840,"src":"6752:210:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1806,"nodeType":"StructuredDocumentation","src":"6968:431:9","text":"@notice The hook called before donate\n @param sender The initial msg.sender for the donate call\n @param key The key for the pool\n @param amount0 The amount of token0 being donated\n @param amount1 The amount of token1 being donated\n @param hookData Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook\n @return bytes4 The function selector for the hook"},"functionSelector":"b6a8b0fa","id":1822,"implemented":false,"kind":"function","modifiers":[],"name":"beforeDonate","nameLocation":"7413:12:9","nodeType":"FunctionDefinition","parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1808,"mutability":"mutable","name":"sender","nameLocation":"7443:6:9","nodeType":"VariableDeclaration","scope":1822,"src":"7435:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1807,"name":"address","nodeType":"ElementaryTypeName","src":"7435:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1811,"mutability":"mutable","name":"key","nameLocation":"7476:3:9","nodeType":"VariableDeclaration","scope":1822,"src":"7459:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1810,"nodeType":"UserDefinedTypeName","pathNode":{"id":1809,"name":"PoolKey","nameLocations":["7459:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"7459:7:9"},"referencedDeclaration":6871,"src":"7459:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1813,"mutability":"mutable","name":"amount0","nameLocation":"7497:7:9","nodeType":"VariableDeclaration","scope":1822,"src":"7489:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1812,"name":"uint256","nodeType":"ElementaryTypeName","src":"7489:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1815,"mutability":"mutable","name":"amount1","nameLocation":"7522:7:9","nodeType":"VariableDeclaration","scope":1822,"src":"7514:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1814,"name":"uint256","nodeType":"ElementaryTypeName","src":"7514:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1817,"mutability":"mutable","name":"hookData","nameLocation":"7554:8:9","nodeType":"VariableDeclaration","scope":1822,"src":"7539:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1816,"name":"bytes","nodeType":"ElementaryTypeName","src":"7539:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7425:143:9"},"returnParameters":{"id":1821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1822,"src":"7587:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1819,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7587:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7586:8:9"},"scope":1840,"src":"7404:191:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1823,"nodeType":"StructuredDocumentation","src":"7601:430:9","text":"@notice The hook called after donate\n @param sender The initial msg.sender for the donate call\n @param key The key for the pool\n @param amount0 The amount of token0 being donated\n @param amount1 The amount of token1 being donated\n @param hookData Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook\n @return bytes4 The function selector for the hook"},"functionSelector":"e1b4af69","id":1839,"implemented":false,"kind":"function","modifiers":[],"name":"afterDonate","nameLocation":"8045:11:9","nodeType":"FunctionDefinition","parameters":{"id":1835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1825,"mutability":"mutable","name":"sender","nameLocation":"8074:6:9","nodeType":"VariableDeclaration","scope":1839,"src":"8066:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1824,"name":"address","nodeType":"ElementaryTypeName","src":"8066:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1828,"mutability":"mutable","name":"key","nameLocation":"8107:3:9","nodeType":"VariableDeclaration","scope":1839,"src":"8090:20:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_calldata_ptr","typeString":"struct PoolKey"},"typeName":{"id":1827,"nodeType":"UserDefinedTypeName","pathNode":{"id":1826,"name":"PoolKey","nameLocations":["8090:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"8090:7:9"},"referencedDeclaration":6871,"src":"8090:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1830,"mutability":"mutable","name":"amount0","nameLocation":"8128:7:9","nodeType":"VariableDeclaration","scope":1839,"src":"8120:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1829,"name":"uint256","nodeType":"ElementaryTypeName","src":"8120:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1832,"mutability":"mutable","name":"amount1","nameLocation":"8153:7:9","nodeType":"VariableDeclaration","scope":1839,"src":"8145:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1831,"name":"uint256","nodeType":"ElementaryTypeName","src":"8145:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1834,"mutability":"mutable","name":"hookData","nameLocation":"8185:8:9","nodeType":"VariableDeclaration","scope":1839,"src":"8170:23:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1833,"name":"bytes","nodeType":"ElementaryTypeName","src":"8170:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8056:143:9"},"returnParameters":{"id":1838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1839,"src":"8218:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1836,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8218:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"8217:8:9"},"scope":1840,"src":"8036:190:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1841,"src":"785:7443:9","usedErrors":[],"usedEvents":[]}],"src":"32:8197:9"},"id":9},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IPoolManager.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IPoolManager.sol","exportedSymbols":{"BalanceDelta":[6311],"Currency":[6525],"IERC6909Claims":[7569],"IExtsload":[7224],"IExttload":[7246],"IHooks":[1840],"IPoolManager":[2123],"IProtocolFees":[7323],"ModifyLiquidityParams":[6887],"PoolId":[6825],"PoolKey":[6871],"SwapParams":[6898]},"id":2124,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1842,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:10"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","file":"../types/Currency.sol","id":1844,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":6820,"src":"58:47:10","symbolAliases":[{"foreign":{"id":1843,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"66:8:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"../types/PoolKey.sol","id":1846,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":6872,"src":"106:45:10","symbolAliases":[{"foreign":{"id":1845,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"114:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IHooks.sol","file":"./IHooks.sol","id":1848,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":1841,"src":"152:36:10","symbolAliases":[{"foreign":{"id":1847,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"160:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC6909Claims.sol","file":"./external/IERC6909Claims.sol","id":1850,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":7570,"src":"189:61:10","symbolAliases":[{"foreign":{"id":1849,"name":"IERC6909Claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7569,"src":"197:14:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IProtocolFees.sol","file":"./IProtocolFees.sol","id":1852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":7324,"src":"251:50:10","symbolAliases":[{"foreign":{"id":1851,"name":"IProtocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"259:13:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol","file":"../types/BalanceDelta.sol","id":1854,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":6470,"src":"302:55:10","symbolAliases":[{"foreign":{"id":1853,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"310:12:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol","file":"../types/PoolId.sol","id":1856,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":6840,"src":"358:43:10","symbolAliases":[{"foreign":{"id":1855,"name":"PoolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6825,"src":"366:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExtsload.sol","file":"./IExtsload.sol","id":1858,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":7225,"src":"402:42:10","symbolAliases":[{"foreign":{"id":1857,"name":"IExtsload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7224,"src":"410:9:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IExttload.sol","file":"./IExttload.sol","id":1860,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":7247,"src":"445:42:10","symbolAliases":[{"foreign":{"id":1859,"name":"IExttload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"453:9:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolOperation.sol","file":"../types/PoolOperation.sol","id":1863,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2124,"sourceUnit":6899,"src":"488:77:10","symbolAliases":[{"foreign":{"id":1861,"name":"ModifyLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6887,"src":"496:21:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1862,"name":"SwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"519:10:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1865,"name":"IProtocolFees","nameLocations":["635:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":7323,"src":"635:13:10"},"id":1866,"nodeType":"InheritanceSpecifier","src":"635:13:10"},{"baseName":{"id":1867,"name":"IERC6909Claims","nameLocations":["650:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":7569,"src":"650:14:10"},"id":1868,"nodeType":"InheritanceSpecifier","src":"650:14:10"},{"baseName":{"id":1869,"name":"IExtsload","nameLocations":["666:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":7224,"src":"666:9:10"},"id":1870,"nodeType":"InheritanceSpecifier","src":"666:9:10"},{"baseName":{"id":1871,"name":"IExttload","nameLocations":["677:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":7246,"src":"677:9:10"},"id":1872,"nodeType":"InheritanceSpecifier","src":"677:9:10"}],"canonicalName":"IPoolManager","contractDependencies":[],"contractKind":"interface","documentation":{"id":1864,"nodeType":"StructuredDocumentation","src":"567:42:10","text":"@notice Interface for the PoolManager"},"fullyImplemented":false,"id":2123,"linearizedBaseContracts":[2123,7246,7224,7569,7323],"name":"IPoolManager","nameLocation":"619:12:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1873,"nodeType":"StructuredDocumentation","src":"693:83:10","text":"@notice Thrown when a currency is not netted out after the contract is unlocked"},"errorSelector":"5212cba1","id":1875,"name":"CurrencyNotSettled","nameLocation":"787:18:10","nodeType":"ErrorDefinition","parameters":{"id":1874,"nodeType":"ParameterList","parameters":[],"src":"805:2:10"},"src":"781:27:10"},{"documentation":{"id":1876,"nodeType":"StructuredDocumentation","src":"814:70:10","text":"@notice Thrown when trying to interact with a non-initialized pool"},"errorSelector":"486aa307","id":1878,"name":"PoolNotInitialized","nameLocation":"895:18:10","nodeType":"ErrorDefinition","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[],"src":"913:2:10"},"src":"889:27:10"},{"documentation":{"id":1879,"nodeType":"StructuredDocumentation","src":"922:78:10","text":"@notice Thrown when unlock is called, but the contract is already unlocked"},"errorSelector":"5090d6c6","id":1881,"name":"AlreadyUnlocked","nameLocation":"1011:15:10","nodeType":"ErrorDefinition","parameters":{"id":1880,"nodeType":"ParameterList","parameters":[],"src":"1026:2:10"},"src":"1005:24:10"},{"documentation":{"id":1882,"nodeType":"StructuredDocumentation","src":"1035:101:10","text":"@notice Thrown when a function is called that requires the contract to be unlocked, but it is not"},"errorSelector":"54e3ca0d","id":1884,"name":"ManagerLocked","nameLocation":"1147:13:10","nodeType":"ErrorDefinition","parameters":{"id":1883,"nodeType":"ParameterList","parameters":[],"src":"1160:2:10"},"src":"1141:22:10"},{"documentation":{"id":1885,"nodeType":"StructuredDocumentation","src":"1169:96:10","text":"@notice Pools are limited to type(int16).max tickSpacing in #initialize, to prevent overflow"},"errorSelector":"b70024f8","id":1889,"name":"TickSpacingTooLarge","nameLocation":"1276:19:10","nodeType":"ErrorDefinition","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"tickSpacing","nameLocation":"1302:11:10","nodeType":"VariableDeclaration","scope":1889,"src":"1296:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1886,"name":"int24","nodeType":"ElementaryTypeName","src":"1296:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1295:19:10"},"src":"1270:45:10"},{"documentation":{"id":1890,"nodeType":"StructuredDocumentation","src":"1321:81:10","text":"@notice Pools must have a positive non-zero tickSpacing passed to #initialize"},"errorSelector":"e9e90588","id":1894,"name":"TickSpacingTooSmall","nameLocation":"1413:19:10","nodeType":"ErrorDefinition","parameters":{"id":1893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1892,"mutability":"mutable","name":"tickSpacing","nameLocation":"1439:11:10","nodeType":"VariableDeclaration","scope":1894,"src":"1433:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1891,"name":"int24","nodeType":"ElementaryTypeName","src":"1433:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1432:19:10"},"src":"1407:45:10"},{"documentation":{"id":1895,"nodeType":"StructuredDocumentation","src":"1458:86:10","text":"@notice PoolKey must have currencies where address(currency0) < address(currency1)"},"errorSelector":"6e6c9830","id":1901,"name":"CurrenciesOutOfOrderOrEqual","nameLocation":"1555:27:10","nodeType":"ErrorDefinition","parameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1897,"mutability":"mutable","name":"currency0","nameLocation":"1591:9:10","nodeType":"VariableDeclaration","scope":1901,"src":"1583:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1896,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1899,"mutability":"mutable","name":"currency1","nameLocation":"1610:9:10","nodeType":"VariableDeclaration","scope":1901,"src":"1602:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1898,"name":"address","nodeType":"ElementaryTypeName","src":"1602:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1582:38:10"},"src":"1549:72:10"},{"documentation":{"id":1902,"nodeType":"StructuredDocumentation","src":"1627:156:10","text":"@notice Thrown when a call to updateDynamicLPFee is made by an address that is not the hook,\n or on a pool that does not have a dynamic swap fee."},"errorSelector":"30d21641","id":1904,"name":"UnauthorizedDynamicLPFeeUpdate","nameLocation":"1794:30:10","nodeType":"ErrorDefinition","parameters":{"id":1903,"nodeType":"ParameterList","parameters":[],"src":"1824:2:10"},"src":"1788:39:10"},{"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"1833:50:10","text":"@notice Thrown when trying to swap amount of 0"},"errorSelector":"be8b8507","id":1907,"name":"SwapAmountCannotBeZero","nameLocation":"1894:22:10","nodeType":"ErrorDefinition","parameters":{"id":1906,"nodeType":"ParameterList","parameters":[],"src":"1916:2:10"},"src":"1888:31:10"},{"documentation":{"id":1908,"nodeType":"StructuredDocumentation","src":"1925:75:10","text":"@notice Thrown when native currency is passed to a non native settlement"},"errorSelector":"b0ec849e","id":1910,"name":"NonzeroNativeValue","nameLocation":"2011:18:10","nodeType":"ErrorDefinition","parameters":{"id":1909,"nodeType":"ParameterList","parameters":[],"src":"2029:2:10"},"src":"2005:27:10"},{"documentation":{"id":1911,"nodeType":"StructuredDocumentation","src":"2038:110:10","text":"@notice Thrown when `clear` is called with an amount that is not exactly equal to the open currency delta."},"errorSelector":"bda73abf","id":1913,"name":"MustClearExactPositiveDelta","nameLocation":"2159:27:10","nodeType":"ErrorDefinition","parameters":{"id":1912,"nodeType":"ParameterList","parameters":[],"src":"2186:2:10"},"src":"2153:36:10"},{"anonymous":false,"documentation":{"id":1914,"nodeType":"StructuredDocumentation","src":"2195:708:10","text":"@notice Emitted when a new pool is initialized\n @param id The abi encoded hash of the pool key struct for the new pool\n @param currency0 The first currency of the pool by address sort order\n @param currency1 The second currency of the pool by address sort order\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks\n @param hooks The hooks contract address for the pool, or address(0) if none\n @param sqrtPriceX96 The price of the pool on initialization\n @param tick The initial tick of the pool corresponding to the initialized price"},"eventSelector":"dd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438","id":1936,"name":"Initialize","nameLocation":"2914:10:10","nodeType":"EventDefinition","parameters":{"id":1935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1917,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"2949:2:10","nodeType":"VariableDeclaration","scope":1936,"src":"2934:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1916,"nodeType":"UserDefinedTypeName","pathNode":{"id":1915,"name":"PoolId","nameLocations":["2934:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"2934:6:10"},"referencedDeclaration":6825,"src":"2934:6:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"},{"constant":false,"id":1920,"indexed":true,"mutability":"mutable","name":"currency0","nameLocation":"2978:9:10","nodeType":"VariableDeclaration","scope":1936,"src":"2961:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":1919,"nodeType":"UserDefinedTypeName","pathNode":{"id":1918,"name":"Currency","nameLocations":["2961:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"2961:8:10"},"referencedDeclaration":6525,"src":"2961:8:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":1923,"indexed":true,"mutability":"mutable","name":"currency1","nameLocation":"3014:9:10","nodeType":"VariableDeclaration","scope":1936,"src":"2997:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":1922,"nodeType":"UserDefinedTypeName","pathNode":{"id":1921,"name":"Currency","nameLocations":["2997:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"2997:8:10"},"referencedDeclaration":6525,"src":"2997:8:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":1925,"indexed":false,"mutability":"mutable","name":"fee","nameLocation":"3040:3:10","nodeType":"VariableDeclaration","scope":1936,"src":"3033:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1924,"name":"uint24","nodeType":"ElementaryTypeName","src":"3033:6:10","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":1927,"indexed":false,"mutability":"mutable","name":"tickSpacing","nameLocation":"3059:11:10","nodeType":"VariableDeclaration","scope":1936,"src":"3053:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1926,"name":"int24","nodeType":"ElementaryTypeName","src":"3053:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1930,"indexed":false,"mutability":"mutable","name":"hooks","nameLocation":"3087:5:10","nodeType":"VariableDeclaration","scope":1936,"src":"3080:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":1929,"nodeType":"UserDefinedTypeName","pathNode":{"id":1928,"name":"IHooks","nameLocations":["3080:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"3080:6:10"},"referencedDeclaration":1840,"src":"3080:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":1932,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"3110:12:10","nodeType":"VariableDeclaration","scope":1936,"src":"3102:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1931,"name":"uint160","nodeType":"ElementaryTypeName","src":"3102:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1934,"indexed":false,"mutability":"mutable","name":"tick","nameLocation":"3138:4:10","nodeType":"VariableDeclaration","scope":1936,"src":"3132:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1933,"name":"int24","nodeType":"ElementaryTypeName","src":"3132:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2924:224:10"},"src":"2908:241:10"},{"anonymous":false,"documentation":{"id":1937,"nodeType":"StructuredDocumentation","src":"3155:459:10","text":"@notice Emitted when a liquidity position is modified\n @param id The abi encoded hash of the pool key struct for the pool that was modified\n @param sender The address that modified the pool\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param liquidityDelta The amount of liquidity that was added or removed\n @param salt The extra data to make positions unique"},"eventSelector":"f208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec","id":1952,"name":"ModifyLiquidity","nameLocation":"3625:15:10","nodeType":"EventDefinition","parameters":{"id":1951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1940,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"3665:2:10","nodeType":"VariableDeclaration","scope":1952,"src":"3650:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1939,"nodeType":"UserDefinedTypeName","pathNode":{"id":1938,"name":"PoolId","nameLocations":["3650:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"3650:6:10"},"referencedDeclaration":6825,"src":"3650:6:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"},{"constant":false,"id":1942,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"3685:6:10","nodeType":"VariableDeclaration","scope":1952,"src":"3669:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1941,"name":"address","nodeType":"ElementaryTypeName","src":"3669:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1944,"indexed":false,"mutability":"mutable","name":"tickLower","nameLocation":"3699:9:10","nodeType":"VariableDeclaration","scope":1952,"src":"3693:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1943,"name":"int24","nodeType":"ElementaryTypeName","src":"3693:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1946,"indexed":false,"mutability":"mutable","name":"tickUpper","nameLocation":"3716:9:10","nodeType":"VariableDeclaration","scope":1952,"src":"3710:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1945,"name":"int24","nodeType":"ElementaryTypeName","src":"3710:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1948,"indexed":false,"mutability":"mutable","name":"liquidityDelta","nameLocation":"3734:14:10","nodeType":"VariableDeclaration","scope":1952,"src":"3727:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1947,"name":"int256","nodeType":"ElementaryTypeName","src":"3727:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1950,"indexed":false,"mutability":"mutable","name":"salt","nameLocation":"3758:4:10","nodeType":"VariableDeclaration","scope":1952,"src":"3750:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3750:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3640:128:10"},"src":"3619:150:10"},{"anonymous":false,"documentation":{"id":1953,"nodeType":"StructuredDocumentation","src":"3775:674:10","text":"@notice Emitted for swaps between currency0 and currency1\n @param id The abi encoded hash of the pool key struct for the pool that was modified\n @param sender The address that initiated the swap call, and that received the callback\n @param amount0 The delta of the currency0 balance of the pool\n @param amount1 The delta of the currency1 balance of the pool\n @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n @param liquidity The liquidity of the pool after the swap\n @param tick The log base 1.0001 of the price of the pool after the swap\n @param fee The swap fee in hundredths of a bip"},"eventSelector":"40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f","id":1972,"name":"Swap","nameLocation":"4460:4:10","nodeType":"EventDefinition","parameters":{"id":1971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1956,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"4489:2:10","nodeType":"VariableDeclaration","scope":1972,"src":"4474:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1955,"nodeType":"UserDefinedTypeName","pathNode":{"id":1954,"name":"PoolId","nameLocations":["4474:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"4474:6:10"},"referencedDeclaration":6825,"src":"4474:6:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"},{"constant":false,"id":1958,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"4517:6:10","nodeType":"VariableDeclaration","scope":1972,"src":"4501:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1957,"name":"address","nodeType":"ElementaryTypeName","src":"4501:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1960,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"4540:7:10","nodeType":"VariableDeclaration","scope":1972,"src":"4533:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1959,"name":"int128","nodeType":"ElementaryTypeName","src":"4533:6:10","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1962,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"4564:7:10","nodeType":"VariableDeclaration","scope":1972,"src":"4557:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1961,"name":"int128","nodeType":"ElementaryTypeName","src":"4557:6:10","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1964,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"4589:12:10","nodeType":"VariableDeclaration","scope":1972,"src":"4581:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1963,"name":"uint160","nodeType":"ElementaryTypeName","src":"4581:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1966,"indexed":false,"mutability":"mutable","name":"liquidity","nameLocation":"4619:9:10","nodeType":"VariableDeclaration","scope":1972,"src":"4611:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1965,"name":"uint128","nodeType":"ElementaryTypeName","src":"4611:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1968,"indexed":false,"mutability":"mutable","name":"tick","nameLocation":"4644:4:10","nodeType":"VariableDeclaration","scope":1972,"src":"4638:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1967,"name":"int24","nodeType":"ElementaryTypeName","src":"4638:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1970,"indexed":false,"mutability":"mutable","name":"fee","nameLocation":"4665:3:10","nodeType":"VariableDeclaration","scope":1972,"src":"4658:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1969,"name":"uint24","nodeType":"ElementaryTypeName","src":"4658:6:10","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"4464:210:10"},"src":"4454:221:10"},{"anonymous":false,"documentation":{"id":1973,"nodeType":"StructuredDocumentation","src":"4681:303:10","text":"@notice Emitted for donations\n @param id The abi encoded hash of the pool key struct for the pool that was donated to\n @param sender The address that initiated the donate call\n @param amount0 The amount donated in currency0\n @param amount1 The amount donated in currency1"},"eventSelector":"29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb","id":1984,"name":"Donate","nameLocation":"4995:6:10","nodeType":"EventDefinition","parameters":{"id":1983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1976,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"5017:2:10","nodeType":"VariableDeclaration","scope":1984,"src":"5002:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":1975,"nodeType":"UserDefinedTypeName","pathNode":{"id":1974,"name":"PoolId","nameLocations":["5002:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"5002:6:10"},"referencedDeclaration":6825,"src":"5002:6:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"},{"constant":false,"id":1978,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"5037:6:10","nodeType":"VariableDeclaration","scope":1984,"src":"5021:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1977,"name":"address","nodeType":"ElementaryTypeName","src":"5021:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1980,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"5053:7:10","nodeType":"VariableDeclaration","scope":1984,"src":"5045:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1979,"name":"uint256","nodeType":"ElementaryTypeName","src":"5045:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1982,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"5070:7:10","nodeType":"VariableDeclaration","scope":1984,"src":"5062:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1981,"name":"uint256","nodeType":"ElementaryTypeName","src":"5062:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5001:77:10"},"src":"4989:90:10"},{"documentation":{"id":1985,"nodeType":"StructuredDocumentation","src":"5085:567:10","text":"@notice All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement\n `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.\n @dev The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`\n @param data Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`\n @return The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`"},"functionSelector":"48c89491","id":1992,"implemented":false,"kind":"function","modifiers":[],"name":"unlock","nameLocation":"5666:6:10","nodeType":"FunctionDefinition","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1987,"mutability":"mutable","name":"data","nameLocation":"5688:4:10","nodeType":"VariableDeclaration","scope":1992,"src":"5673:19:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1986,"name":"bytes","nodeType":"ElementaryTypeName","src":"5673:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5672:21:10"},"returnParameters":{"id":1991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1992,"src":"5712:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1989,"name":"bytes","nodeType":"ElementaryTypeName","src":"5712:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5711:14:10"},"scope":2123,"src":"5657:69:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1993,"nodeType":"StructuredDocumentation","src":"5732:356:10","text":"@notice Initialize the state for a given pool ID\n @dev A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\n @param key The pool key for the pool to initialize\n @param sqrtPriceX96 The initial square root price\n @return tick The initial tick of the pool"},"functionSelector":"6276cbbe","id":2003,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"6102:10:10","nodeType":"FunctionDefinition","parameters":{"id":1999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1996,"mutability":"mutable","name":"key","nameLocation":"6128:3:10","nodeType":"VariableDeclaration","scope":2003,"src":"6113:18:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":1995,"nodeType":"UserDefinedTypeName","pathNode":{"id":1994,"name":"PoolKey","nameLocations":["6113:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"6113:7:10"},"referencedDeclaration":6871,"src":"6113:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":1998,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"6141:12:10","nodeType":"VariableDeclaration","scope":2003,"src":"6133:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1997,"name":"uint160","nodeType":"ElementaryTypeName","src":"6133:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"6112:42:10"},"returnParameters":{"id":2002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"tick","nameLocation":"6179:4:10","nodeType":"VariableDeclaration","scope":2003,"src":"6173:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2000,"name":"int24","nodeType":"ElementaryTypeName","src":"6173:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"6172:12:10"},"scope":2123,"src":"6093:92:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2004,"nodeType":"StructuredDocumentation","src":"6191:985:10","text":"@notice Modify the liquidity for the given pool\n @dev Poke by calling with a zero liquidityDelta\n @param key The pool to modify liquidity in\n @param params The parameters for modifying the liquidity\n @param hookData The data to pass through to the add/removeLiquidity hooks\n @return callerDelta The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable\n @return feesAccrued The balance delta of the fees generated in the liquidity range. Returned for informational purposes\n @dev Note that feesAccrued can be artificially inflated by a malicious actor and integrators should be careful using the value\n For pools with a single liquidity position, actors can donate to themselves to inflate feeGrowthGlobal (and consequently feesAccrued)\n atomically donating and collecting fees in the same unlockCallback may make the inflated value more extreme"},"functionSelector":"5a6bcfda","id":2021,"implemented":false,"kind":"function","modifiers":[],"name":"modifyLiquidity","nameLocation":"7190:15:10","nodeType":"FunctionDefinition","parameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2007,"mutability":"mutable","name":"key","nameLocation":"7221:3:10","nodeType":"VariableDeclaration","scope":2021,"src":"7206:18:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":2006,"nodeType":"UserDefinedTypeName","pathNode":{"id":2005,"name":"PoolKey","nameLocations":["7206:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"7206:7:10"},"referencedDeclaration":6871,"src":"7206:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":2010,"mutability":"mutable","name":"params","nameLocation":"7255:6:10","nodeType":"VariableDeclaration","scope":2021,"src":"7226:35:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":2009,"nodeType":"UserDefinedTypeName","pathNode":{"id":2008,"name":"ModifyLiquidityParams","nameLocations":["7226:21:10"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"7226:21:10"},"referencedDeclaration":6887,"src":"7226:21:10","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":2012,"mutability":"mutable","name":"hookData","nameLocation":"7278:8:10","nodeType":"VariableDeclaration","scope":2021,"src":"7263:23:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2011,"name":"bytes","nodeType":"ElementaryTypeName","src":"7263:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7205:82:10"},"returnParameters":{"id":2020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2016,"mutability":"mutable","name":"callerDelta","nameLocation":"7335:11:10","nodeType":"VariableDeclaration","scope":2021,"src":"7322:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":2015,"nodeType":"UserDefinedTypeName","pathNode":{"id":2014,"name":"BalanceDelta","nameLocations":["7322:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"7322:12:10"},"referencedDeclaration":6311,"src":"7322:12:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":2019,"mutability":"mutable","name":"feesAccrued","nameLocation":"7361:11:10","nodeType":"VariableDeclaration","scope":2021,"src":"7348:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":2018,"nodeType":"UserDefinedTypeName","pathNode":{"id":2017,"name":"BalanceDelta","nameLocations":["7348:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"7348:12:10"},"referencedDeclaration":6311,"src":"7348:12:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"7321:52:10"},"scope":2123,"src":"7181:193:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2022,"nodeType":"StructuredDocumentation","src":"7380:643:10","text":"@notice Swap against the given pool\n @param key The pool to swap in\n @param params The parameters for swapping\n @param hookData The data to pass through to the swap hooks\n @return swapDelta The balance delta of the address swapping\n @dev Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified.\n Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG\n the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta."},"functionSelector":"f3cd914c","id":2036,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"8037:4:10","nodeType":"FunctionDefinition","parameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2025,"mutability":"mutable","name":"key","nameLocation":"8057:3:10","nodeType":"VariableDeclaration","scope":2036,"src":"8042:18:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":2024,"nodeType":"UserDefinedTypeName","pathNode":{"id":2023,"name":"PoolKey","nameLocations":["8042:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"8042:7:10"},"referencedDeclaration":6871,"src":"8042:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":2028,"mutability":"mutable","name":"params","nameLocation":"8080:6:10","nodeType":"VariableDeclaration","scope":2036,"src":"8062:24:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams"},"typeName":{"id":2027,"nodeType":"UserDefinedTypeName","pathNode":{"id":2026,"name":"SwapParams","nameLocations":["8062:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":6898,"src":"8062:10:10"},"referencedDeclaration":6898,"src":"8062:10:10","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_storage_ptr","typeString":"struct SwapParams"}},"visibility":"internal"},{"constant":false,"id":2030,"mutability":"mutable","name":"hookData","nameLocation":"8103:8:10","nodeType":"VariableDeclaration","scope":2036,"src":"8088:23:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2029,"name":"bytes","nodeType":"ElementaryTypeName","src":"8088:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8041:71:10"},"returnParameters":{"id":2035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2034,"mutability":"mutable","name":"swapDelta","nameLocation":"8160:9:10","nodeType":"VariableDeclaration","scope":2036,"src":"8147:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":2033,"nodeType":"UserDefinedTypeName","pathNode":{"id":2032,"name":"BalanceDelta","nameLocations":["8147:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"8147:12:10"},"referencedDeclaration":6311,"src":"8147:12:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"8146:24:10"},"scope":2123,"src":"8028:143:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2037,"nodeType":"StructuredDocumentation","src":"8177:1052:10","text":"@notice Donate the given currency amounts to the in-range liquidity providers of a pool\n @dev Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds.\n Donors should keep this in mind when designing donation mechanisms.\n @dev This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of\n a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to\n `donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)).\n Read the comments in `Pool.swap()` for more information about this.\n @param key The key of the pool to donate to\n @param amount0 The amount of currency0 to donate\n @param amount1 The amount of currency1 to donate\n @param hookData The data to pass through to the donate hooks\n @return BalanceDelta The delta of the caller after the donate"},"functionSelector":"234266d7","id":2052,"implemented":false,"kind":"function","modifiers":[],"name":"donate","nameLocation":"9243:6:10","nodeType":"FunctionDefinition","parameters":{"id":2047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2040,"mutability":"mutable","name":"key","nameLocation":"9265:3:10","nodeType":"VariableDeclaration","scope":2052,"src":"9250:18:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":2039,"nodeType":"UserDefinedTypeName","pathNode":{"id":2038,"name":"PoolKey","nameLocations":["9250:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"9250:7:10"},"referencedDeclaration":6871,"src":"9250:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":2042,"mutability":"mutable","name":"amount0","nameLocation":"9278:7:10","nodeType":"VariableDeclaration","scope":2052,"src":"9270:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2041,"name":"uint256","nodeType":"ElementaryTypeName","src":"9270:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2044,"mutability":"mutable","name":"amount1","nameLocation":"9295:7:10","nodeType":"VariableDeclaration","scope":2052,"src":"9287:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2043,"name":"uint256","nodeType":"ElementaryTypeName","src":"9287:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2046,"mutability":"mutable","name":"hookData","nameLocation":"9319:8:10","nodeType":"VariableDeclaration","scope":2052,"src":"9304:23:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2045,"name":"bytes","nodeType":"ElementaryTypeName","src":"9304:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9249:79:10"},"returnParameters":{"id":2051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2052,"src":"9363:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":2049,"nodeType":"UserDefinedTypeName","pathNode":{"id":2048,"name":"BalanceDelta","nameLocations":["9363:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"9363:12:10"},"referencedDeclaration":6311,"src":"9363:12:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"9362:14:10"},"scope":2123,"src":"9234:143:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2053,"nodeType":"StructuredDocumentation","src":"9383:605:10","text":"@notice Writes the current ERC20 balance of the specified currency to transient storage\n This is used to checkpoint balances for the manager and derive deltas for the caller.\n @dev This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped\n for native tokens because the amount to settle is determined by the sent value.\n However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle\n native funds, this function can be called with the native currency to then be able to settle the native currency"},"functionSelector":"a5841194","id":2059,"implemented":false,"kind":"function","modifiers":[],"name":"sync","nameLocation":"10002:4:10","nodeType":"FunctionDefinition","parameters":{"id":2057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2056,"mutability":"mutable","name":"currency","nameLocation":"10016:8:10","nodeType":"VariableDeclaration","scope":2059,"src":"10007:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2055,"nodeType":"UserDefinedTypeName","pathNode":{"id":2054,"name":"Currency","nameLocations":["10007:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"10007:8:10"},"referencedDeclaration":6525,"src":"10007:8:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"10006:19:10"},"returnParameters":{"id":2058,"nodeType":"ParameterList","parameters":[],"src":"10034:0:10"},"scope":2123,"src":"9993:42:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2060,"nodeType":"StructuredDocumentation","src":"10041:405:10","text":"@notice Called by the user to net out some value owed to the user\n @dev Will revert if the requested amount is not available, consider using `mint` instead\n @dev Can also be used as a mechanism for free flash loans\n @param currency The currency to withdraw from the pool manager\n @param to The address to withdraw to\n @param amount The amount of currency to withdraw"},"functionSelector":"0b0d9c09","id":2070,"implemented":false,"kind":"function","modifiers":[],"name":"take","nameLocation":"10460:4:10","nodeType":"FunctionDefinition","parameters":{"id":2068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"currency","nameLocation":"10474:8:10","nodeType":"VariableDeclaration","scope":2070,"src":"10465:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2062,"nodeType":"UserDefinedTypeName","pathNode":{"id":2061,"name":"Currency","nameLocations":["10465:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"10465:8:10"},"referencedDeclaration":6525,"src":"10465:8:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":2065,"mutability":"mutable","name":"to","nameLocation":"10492:2:10","nodeType":"VariableDeclaration","scope":2070,"src":"10484:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2064,"name":"address","nodeType":"ElementaryTypeName","src":"10484:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2067,"mutability":"mutable","name":"amount","nameLocation":"10504:6:10","nodeType":"VariableDeclaration","scope":2070,"src":"10496:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2066,"name":"uint256","nodeType":"ElementaryTypeName","src":"10496:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10464:47:10"},"returnParameters":{"id":2069,"nodeType":"ParameterList","parameters":[],"src":"10520:0:10"},"scope":2123,"src":"10451:70:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2071,"nodeType":"StructuredDocumentation","src":"10527:102:10","text":"@notice Called by the user to pay what is owed\n @return paid The amount of currency settled"},"functionSelector":"11da60b4","id":2076,"implemented":false,"kind":"function","modifiers":[],"name":"settle","nameLocation":"10643:6:10","nodeType":"FunctionDefinition","parameters":{"id":2072,"nodeType":"ParameterList","parameters":[],"src":"10649:2:10"},"returnParameters":{"id":2075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2074,"mutability":"mutable","name":"paid","nameLocation":"10686:4:10","nodeType":"VariableDeclaration","scope":2076,"src":"10678:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2073,"name":"uint256","nodeType":"ElementaryTypeName","src":"10678:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10677:14:10"},"scope":2123,"src":"10634:58:10","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2077,"nodeType":"StructuredDocumentation","src":"10698:181:10","text":"@notice Called by the user to pay on behalf of another address\n @param recipient The address to credit for the payment\n @return paid The amount of currency settled"},"functionSelector":"3dd45adb","id":2084,"implemented":false,"kind":"function","modifiers":[],"name":"settleFor","nameLocation":"10893:9:10","nodeType":"FunctionDefinition","parameters":{"id":2080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2079,"mutability":"mutable","name":"recipient","nameLocation":"10911:9:10","nodeType":"VariableDeclaration","scope":2084,"src":"10903:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2078,"name":"address","nodeType":"ElementaryTypeName","src":"10903:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10902:19:10"},"returnParameters":{"id":2083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"paid","nameLocation":"10956:4:10","nodeType":"VariableDeclaration","scope":2084,"src":"10948:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2081,"name":"uint256","nodeType":"ElementaryTypeName","src":"10948:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10947:14:10"},"scope":2123,"src":"10884:78:10","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2085,"nodeType":"StructuredDocumentation","src":"10968:425:10","text":"@notice WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently.\n A call to clear will zero out a positive balance WITHOUT a corresponding transfer.\n @dev This could be used to clear a balance that is considered dust.\n Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared."},"functionSelector":"80f0b44c","id":2093,"implemented":false,"kind":"function","modifiers":[],"name":"clear","nameLocation":"11407:5:10","nodeType":"FunctionDefinition","parameters":{"id":2091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2088,"mutability":"mutable","name":"currency","nameLocation":"11422:8:10","nodeType":"VariableDeclaration","scope":2093,"src":"11413:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2087,"nodeType":"UserDefinedTypeName","pathNode":{"id":2086,"name":"Currency","nameLocations":["11413:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"11413:8:10"},"referencedDeclaration":6525,"src":"11413:8:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":2090,"mutability":"mutable","name":"amount","nameLocation":"11440:6:10","nodeType":"VariableDeclaration","scope":2093,"src":"11432:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2089,"name":"uint256","nodeType":"ElementaryTypeName","src":"11432:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11412:35:10"},"returnParameters":{"id":2092,"nodeType":"ParameterList","parameters":[],"src":"11456:0:10"},"scope":2123,"src":"11398:59:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2094,"nodeType":"StructuredDocumentation","src":"11463:388:10","text":"@notice Called by the user to move value into ERC6909 balance\n @param to The address to mint the tokens to\n @param id The currency address to mint to ERC6909s, as a uint256\n @param amount The amount of currency to mint\n @dev The id is converted to a uint160 to correspond to a currency address\n If the upper 12 bytes are not 0, they will be 0-ed out"},"functionSelector":"156e29f6","id":2103,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"11865:4:10","nodeType":"FunctionDefinition","parameters":{"id":2101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"to","nameLocation":"11878:2:10","nodeType":"VariableDeclaration","scope":2103,"src":"11870:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2095,"name":"address","nodeType":"ElementaryTypeName","src":"11870:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2098,"mutability":"mutable","name":"id","nameLocation":"11890:2:10","nodeType":"VariableDeclaration","scope":2103,"src":"11882:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2097,"name":"uint256","nodeType":"ElementaryTypeName","src":"11882:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2100,"mutability":"mutable","name":"amount","nameLocation":"11902:6:10","nodeType":"VariableDeclaration","scope":2103,"src":"11894:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2099,"name":"uint256","nodeType":"ElementaryTypeName","src":"11894:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11869:40:10"},"returnParameters":{"id":2102,"nodeType":"ParameterList","parameters":[],"src":"11918:0:10"},"scope":2123,"src":"11856:63:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2104,"nodeType":"StructuredDocumentation","src":"11925:394:10","text":"@notice Called by the user to move value from ERC6909 balance\n @param from The address to burn the tokens from\n @param id The currency address to burn from ERC6909s, as a uint256\n @param amount The amount of currency to burn\n @dev The id is converted to a uint160 to correspond to a currency address\n If the upper 12 bytes are not 0, they will be 0-ed out"},"functionSelector":"f5298aca","id":2113,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"12333:4:10","nodeType":"FunctionDefinition","parameters":{"id":2111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2106,"mutability":"mutable","name":"from","nameLocation":"12346:4:10","nodeType":"VariableDeclaration","scope":2113,"src":"12338:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2105,"name":"address","nodeType":"ElementaryTypeName","src":"12338:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2108,"mutability":"mutable","name":"id","nameLocation":"12360:2:10","nodeType":"VariableDeclaration","scope":2113,"src":"12352:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"12352:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2110,"mutability":"mutable","name":"amount","nameLocation":"12372:6:10","nodeType":"VariableDeclaration","scope":2113,"src":"12364:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2109,"name":"uint256","nodeType":"ElementaryTypeName","src":"12364:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12337:42:10"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[],"src":"12388:0:10"},"scope":2123,"src":"12324:65:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2114,"nodeType":"StructuredDocumentation","src":"12395:351:10","text":"@notice Updates the pools lp fees for the a pool that has enabled dynamic lp fees.\n @dev A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\n @param key The key of the pool to update dynamic LP fees for\n @param newDynamicLPFee The new dynamic pool LP fee"},"functionSelector":"52759651","id":2122,"implemented":false,"kind":"function","modifiers":[],"name":"updateDynamicLPFee","nameLocation":"12760:18:10","nodeType":"FunctionDefinition","parameters":{"id":2120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2117,"mutability":"mutable","name":"key","nameLocation":"12794:3:10","nodeType":"VariableDeclaration","scope":2122,"src":"12779:18:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":2116,"nodeType":"UserDefinedTypeName","pathNode":{"id":2115,"name":"PoolKey","nameLocations":["12779:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"12779:7:10"},"referencedDeclaration":6871,"src":"12779:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":2119,"mutability":"mutable","name":"newDynamicLPFee","nameLocation":"12806:15:10","nodeType":"VariableDeclaration","scope":2122,"src":"12799:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":2118,"name":"uint24","nodeType":"ElementaryTypeName","src":"12799:6:10","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"12778:44:10"},"returnParameters":{"id":2121,"nodeType":"ParameterList","parameters":[],"src":"12831:0:10"},"scope":2123,"src":"12751:81:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2124,"src":"609:12225:10","usedErrors":[1875,1878,1881,1884,1889,1894,1901,1904,1907,1910,1913,7260,7263,7266],"usedEvents":[1936,1952,1972,1984,7271,7279,7466,7476,7488]}],"src":"32:12803:10"},"id":10},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IProtocolFees.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IProtocolFees.sol","exportedSymbols":{"Currency":[6525],"IProtocolFees":[7323],"PoolId":[6825],"PoolKey":[6871]},"id":7324,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7248,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:11"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","file":"../types/Currency.sol","id":7250,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7324,"sourceUnit":6820,"src":"57:47:11","symbolAliases":[{"foreign":{"id":7249,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"65:8:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol","file":"../types/PoolId.sol","id":7252,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7324,"sourceUnit":6840,"src":"105:43:11","symbolAliases":[{"foreign":{"id":7251,"name":"PoolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6825,"src":"113:6:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"../types/PoolKey.sol","id":7254,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7324,"sourceUnit":6872,"src":"149:45:11","symbolAliases":[{"foreign":{"id":7253,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"157:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IProtocolFees","contractDependencies":[],"contractKind":"interface","documentation":{"id":7255,"nodeType":"StructuredDocumentation","src":"196:81:11","text":"@notice Interface for all protocol-fee related functions in the pool manager"},"fullyImplemented":false,"id":7323,"linearizedBaseContracts":[7323],"name":"IProtocolFees","nameLocation":"287:13:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7256,"nodeType":"StructuredDocumentation","src":"307:52:11","text":"@notice Thrown when protocol fee is set too high"},"errorSelector":"a7abe2f7","id":7260,"name":"ProtocolFeeTooLarge","nameLocation":"370:19:11","nodeType":"ErrorDefinition","parameters":{"id":7259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7258,"mutability":"mutable","name":"fee","nameLocation":"397:3:11","nodeType":"VariableDeclaration","scope":7260,"src":"390:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7257,"name":"uint24","nodeType":"ElementaryTypeName","src":"390:6:11","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"389:12:11"},"src":"364:38:11"},{"documentation":{"id":7261,"nodeType":"StructuredDocumentation","src":"408:94:11","text":"@notice Thrown when collectProtocolFees or setProtocolFee is not called by the controller."},"errorSelector":"48f5c3ed","id":7263,"name":"InvalidCaller","nameLocation":"513:13:11","nodeType":"ErrorDefinition","parameters":{"id":7262,"nodeType":"ParameterList","parameters":[],"src":"526:2:11"},"src":"507:22:11"},{"documentation":{"id":7264,"nodeType":"StructuredDocumentation","src":"535:83:11","text":"@notice Thrown when collectProtocolFees is attempted on a token that is synced."},"errorSelector":"c79e5948","id":7266,"name":"ProtocolFeeCurrencySynced","nameLocation":"629:25:11","nodeType":"ErrorDefinition","parameters":{"id":7265,"nodeType":"ParameterList","parameters":[],"src":"654:2:11"},"src":"623:34:11"},{"anonymous":false,"documentation":{"id":7267,"nodeType":"StructuredDocumentation","src":"663:100:11","text":"@notice Emitted when the protocol fee controller address is updated in setProtocolFeeController."},"eventSelector":"b4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc","id":7271,"name":"ProtocolFeeControllerUpdated","nameLocation":"774:28:11","nodeType":"EventDefinition","parameters":{"id":7270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7269,"indexed":true,"mutability":"mutable","name":"protocolFeeController","nameLocation":"819:21:11","nodeType":"VariableDeclaration","scope":7271,"src":"803:37:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7268,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"802:39:11"},"src":"768:74:11"},{"anonymous":false,"documentation":{"id":7272,"nodeType":"StructuredDocumentation","src":"848:64:11","text":"@notice Emitted when the protocol fee is updated for a pool."},"eventSelector":"e9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9","id":7279,"name":"ProtocolFeeUpdated","nameLocation":"923:18:11","nodeType":"EventDefinition","parameters":{"id":7278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7275,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"957:2:11","nodeType":"VariableDeclaration","scope":7279,"src":"942:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":7274,"nodeType":"UserDefinedTypeName","pathNode":{"id":7273,"name":"PoolId","nameLocations":["942:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"942:6:11"},"referencedDeclaration":6825,"src":"942:6:11","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"},{"constant":false,"id":7277,"indexed":false,"mutability":"mutable","name":"protocolFee","nameLocation":"968:11:11","nodeType":"VariableDeclaration","scope":7279,"src":"961:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7276,"name":"uint24","nodeType":"ElementaryTypeName","src":"961:6:11","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"941:39:11"},"src":"917:64:11"},{"documentation":{"id":7280,"nodeType":"StructuredDocumentation","src":"987:209:11","text":"@notice Given a currency address, returns the protocol fees accrued in that currency\n @param currency The currency to check\n @return amount The amount of protocol fees accrued in the currency"},"functionSelector":"97e8cd4e","id":7288,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFeesAccrued","nameLocation":"1210:19:11","nodeType":"FunctionDefinition","parameters":{"id":7284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7283,"mutability":"mutable","name":"currency","nameLocation":"1239:8:11","nodeType":"VariableDeclaration","scope":7288,"src":"1230:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":7282,"nodeType":"UserDefinedTypeName","pathNode":{"id":7281,"name":"Currency","nameLocations":["1230:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"1230:8:11"},"referencedDeclaration":6525,"src":"1230:8:11","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"1229:19:11"},"returnParameters":{"id":7287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7286,"mutability":"mutable","name":"amount","nameLocation":"1280:6:11","nodeType":"VariableDeclaration","scope":7288,"src":"1272:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7285,"name":"uint256","nodeType":"ElementaryTypeName","src":"1272:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1271:16:11"},"scope":7323,"src":"1201:87:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7289,"nodeType":"StructuredDocumentation","src":"1294:162:11","text":"@notice Sets the protocol fee for the given pool\n @param key The key of the pool to set a protocol fee for\n @param newProtocolFee The fee to set"},"functionSelector":"7e87ce7d","id":7297,"implemented":false,"kind":"function","modifiers":[],"name":"setProtocolFee","nameLocation":"1470:14:11","nodeType":"FunctionDefinition","parameters":{"id":7295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7292,"mutability":"mutable","name":"key","nameLocation":"1500:3:11","nodeType":"VariableDeclaration","scope":7297,"src":"1485:18:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":7291,"nodeType":"UserDefinedTypeName","pathNode":{"id":7290,"name":"PoolKey","nameLocations":["1485:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"1485:7:11"},"referencedDeclaration":6871,"src":"1485:7:11","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":7294,"mutability":"mutable","name":"newProtocolFee","nameLocation":"1512:14:11","nodeType":"VariableDeclaration","scope":7297,"src":"1505:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7293,"name":"uint24","nodeType":"ElementaryTypeName","src":"1505:6:11","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1484:43:11"},"returnParameters":{"id":7296,"nodeType":"ParameterList","parameters":[],"src":"1536:0:11"},"scope":7323,"src":"1461:76:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7298,"nodeType":"StructuredDocumentation","src":"1543:102:11","text":"@notice Sets the protocol fee controller\n @param controller The new protocol fee controller"},"functionSelector":"2d771389","id":7303,"implemented":false,"kind":"function","modifiers":[],"name":"setProtocolFeeController","nameLocation":"1659:24:11","nodeType":"FunctionDefinition","parameters":{"id":7301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7300,"mutability":"mutable","name":"controller","nameLocation":"1692:10:11","nodeType":"VariableDeclaration","scope":7303,"src":"1684:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7299,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:20:11"},"returnParameters":{"id":7302,"nodeType":"ParameterList","parameters":[],"src":"1712:0:11"},"scope":7323,"src":"1650:63:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7304,"nodeType":"StructuredDocumentation","src":"1719:413:11","text":"@notice Collects the protocol fees for a given recipient and currency, returning the amount collected\n @dev This will revert if the contract is unlocked\n @param recipient The address to receive the protocol fees\n @param currency The currency to withdraw\n @param amount The amount of currency to withdraw\n @return amountCollected The amount of currency successfully withdrawn"},"functionSelector":"8161b874","id":7316,"implemented":false,"kind":"function","modifiers":[],"name":"collectProtocolFees","nameLocation":"2146:19:11","nodeType":"FunctionDefinition","parameters":{"id":7312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7306,"mutability":"mutable","name":"recipient","nameLocation":"2174:9:11","nodeType":"VariableDeclaration","scope":7316,"src":"2166:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7305,"name":"address","nodeType":"ElementaryTypeName","src":"2166:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7309,"mutability":"mutable","name":"currency","nameLocation":"2194:8:11","nodeType":"VariableDeclaration","scope":7316,"src":"2185:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":7308,"nodeType":"UserDefinedTypeName","pathNode":{"id":7307,"name":"Currency","nameLocations":["2185:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"2185:8:11"},"referencedDeclaration":6525,"src":"2185:8:11","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":7311,"mutability":"mutable","name":"amount","nameLocation":"2212:6:11","nodeType":"VariableDeclaration","scope":7316,"src":"2204:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7310,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2165:54:11"},"returnParameters":{"id":7315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7314,"mutability":"mutable","name":"amountCollected","nameLocation":"2262:15:11","nodeType":"VariableDeclaration","scope":7316,"src":"2254:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7313,"name":"uint256","nodeType":"ElementaryTypeName","src":"2254:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2253:25:11"},"scope":7323,"src":"2137:142:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7317,"nodeType":"StructuredDocumentation","src":"2285:131:11","text":"@notice Returns the current protocol fee controller address\n @return address The current protocol fee controller address"},"functionSelector":"f02de3b2","id":7322,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFeeController","nameLocation":"2430:21:11","nodeType":"FunctionDefinition","parameters":{"id":7318,"nodeType":"ParameterList","parameters":[],"src":"2451:2:11"},"returnParameters":{"id":7321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7322,"src":"2477:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7319,"name":"address","nodeType":"ElementaryTypeName","src":"2477:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2476:9:11"},"scope":7323,"src":"2421:65:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7324,"src":"277:2211:11","usedErrors":[7260,7263,7266],"usedEvents":[7271,7279]}],"src":"32:2457:11"},"id":11},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/callback/IUnlockCallback.sol","exportedSymbols":{"IUnlockCallback":[2135]},"id":2136,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2125,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IUnlockCallback","contractDependencies":[],"contractKind":"interface","documentation":{"id":2126,"nodeType":"StructuredDocumentation","src":"57:89:12","text":"@notice Interface for the callback executed when an address unlocks the pool manager"},"fullyImplemented":false,"id":2135,"linearizedBaseContracts":[2135],"name":"IUnlockCallback","nameLocation":"156:15:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2127,"nodeType":"StructuredDocumentation","src":"178:225:12","text":"@notice Called by the pool manager on `msg.sender` when the manager is unlocked\n @param data The data that was passed to the call to unlock\n @return Any data that you want to be returned from the unlock call"},"functionSelector":"91dd7346","id":2134,"implemented":false,"kind":"function","modifiers":[],"name":"unlockCallback","nameLocation":"417:14:12","nodeType":"FunctionDefinition","parameters":{"id":2130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2129,"mutability":"mutable","name":"data","nameLocation":"447:4:12","nodeType":"VariableDeclaration","scope":2134,"src":"432:19:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2128,"name":"bytes","nodeType":"ElementaryTypeName","src":"432:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"431:21:12"},"returnParameters":{"id":2133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2134,"src":"471:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2131,"name":"bytes","nodeType":"ElementaryTypeName","src":"471:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"470:14:12"},"scope":2135,"src":"408:77:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2136,"src":"146:341:12","usedErrors":[],"usedEvents":[]}],"src":"32:456:12"},"id":12},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC20Minimal.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC20Minimal.sol","exportedSymbols":{"IERC20Minimal":[9021]},"id":9022,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8951,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Minimal","contractDependencies":[],"contractKind":"interface","documentation":{"id":8952,"nodeType":"StructuredDocumentation","src":"57:132:13","text":"@title Minimal ERC20 interface for Uniswap\n @notice Contains a subset of the full ERC20 interface that is used in Uniswap V3"},"fullyImplemented":false,"id":9021,"linearizedBaseContracts":[9021],"name":"IERC20Minimal","nameLocation":"199:13:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8953,"nodeType":"StructuredDocumentation","src":"219:212:13","text":"@notice Returns an account's balance in the token\n @param account The account for which to look up the number of tokens it has, i.e. its balance\n @return The number of tokens held by the account"},"functionSelector":"70a08231","id":8960,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"445:9:13","nodeType":"FunctionDefinition","parameters":{"id":8956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8955,"mutability":"mutable","name":"account","nameLocation":"463:7:13","nodeType":"VariableDeclaration","scope":8960,"src":"455:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8954,"name":"address","nodeType":"ElementaryTypeName","src":"455:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"454:17:13"},"returnParameters":{"id":8959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8960,"src":"495:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8957,"name":"uint256","nodeType":"ElementaryTypeName","src":"495:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"494:9:13"},"scope":9021,"src":"436:68:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8961,"nodeType":"StructuredDocumentation","src":"510:333:13","text":"@notice Transfers the amount of token from the `msg.sender` to the recipient\n @param recipient The account that will receive the amount transferred\n @param amount The number of tokens to send from the sender to the recipient\n @return Returns true for a successful transfer, false for an unsuccessful transfer"},"functionSelector":"a9059cbb","id":8970,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"857:8:13","nodeType":"FunctionDefinition","parameters":{"id":8966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8963,"mutability":"mutable","name":"recipient","nameLocation":"874:9:13","nodeType":"VariableDeclaration","scope":8970,"src":"866:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8962,"name":"address","nodeType":"ElementaryTypeName","src":"866:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8965,"mutability":"mutable","name":"amount","nameLocation":"893:6:13","nodeType":"VariableDeclaration","scope":8970,"src":"885:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8964,"name":"uint256","nodeType":"ElementaryTypeName","src":"885:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"865:35:13"},"returnParameters":{"id":8969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8968,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8970,"src":"919:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8967,"name":"bool","nodeType":"ElementaryTypeName","src":"919:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"918:6:13"},"scope":9021,"src":"848:77:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8971,"nodeType":"StructuredDocumentation","src":"931:250:13","text":"@notice Returns the current allowance given to a spender by an owner\n @param owner The account of the token owner\n @param spender The account of the token spender\n @return The current allowance granted by `owner` to `spender`"},"functionSelector":"dd62ed3e","id":8980,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1195:9:13","nodeType":"FunctionDefinition","parameters":{"id":8976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8973,"mutability":"mutable","name":"owner","nameLocation":"1213:5:13","nodeType":"VariableDeclaration","scope":8980,"src":"1205:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8972,"name":"address","nodeType":"ElementaryTypeName","src":"1205:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8975,"mutability":"mutable","name":"spender","nameLocation":"1228:7:13","nodeType":"VariableDeclaration","scope":8980,"src":"1220:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8974,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1204:32:13"},"returnParameters":{"id":8979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8980,"src":"1260:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8977,"name":"uint256","nodeType":"ElementaryTypeName","src":"1260:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1259:9:13"},"scope":9021,"src":"1186:83:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8981,"nodeType":"StructuredDocumentation","src":"1275:343:13","text":"@notice Sets the allowance of a spender from the `msg.sender` to the value `amount`\n @param spender The account which will be allowed to spend a given amount of the owners tokens\n @param amount The amount of tokens allowed to be used by `spender`\n @return Returns true for a successful approval, false for unsuccessful"},"functionSelector":"095ea7b3","id":8990,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"1632:7:13","nodeType":"FunctionDefinition","parameters":{"id":8986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8983,"mutability":"mutable","name":"spender","nameLocation":"1648:7:13","nodeType":"VariableDeclaration","scope":8990,"src":"1640:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8982,"name":"address","nodeType":"ElementaryTypeName","src":"1640:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8985,"mutability":"mutable","name":"amount","nameLocation":"1665:6:13","nodeType":"VariableDeclaration","scope":8990,"src":"1657:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8984,"name":"uint256","nodeType":"ElementaryTypeName","src":"1657:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1639:33:13"},"returnParameters":{"id":8989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8990,"src":"1691:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8987,"name":"bool","nodeType":"ElementaryTypeName","src":"1691:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1690:6:13"},"scope":9021,"src":"1623:74:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8991,"nodeType":"StructuredDocumentation","src":"1703:371:13","text":"@notice Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\n @param sender The account from which the transfer will be initiated\n @param recipient The recipient of the transfer\n @param amount The amount of the transfer\n @return Returns true for a successful transfer, false for unsuccessful"},"functionSelector":"23b872dd","id":9002,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2088:12:13","nodeType":"FunctionDefinition","parameters":{"id":8998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8993,"mutability":"mutable","name":"sender","nameLocation":"2109:6:13","nodeType":"VariableDeclaration","scope":9002,"src":"2101:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8992,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8995,"mutability":"mutable","name":"recipient","nameLocation":"2125:9:13","nodeType":"VariableDeclaration","scope":9002,"src":"2117:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8994,"name":"address","nodeType":"ElementaryTypeName","src":"2117:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8997,"mutability":"mutable","name":"amount","nameLocation":"2144:6:13","nodeType":"VariableDeclaration","scope":9002,"src":"2136:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8996,"name":"uint256","nodeType":"ElementaryTypeName","src":"2136:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2100:51:13"},"returnParameters":{"id":9001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9002,"src":"2170:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8999,"name":"bool","nodeType":"ElementaryTypeName","src":"2170:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2169:6:13"},"scope":9021,"src":"2079:97:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":9003,"nodeType":"StructuredDocumentation","src":"2182:369:13","text":"@notice Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\n @param from The account from which the tokens were sent, i.e. the balance decreased\n @param to The account to which the tokens were sent, i.e. the balance increased\n @param value The amount of tokens that were transferred"},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":9011,"name":"Transfer","nameLocation":"2562:8:13","nodeType":"EventDefinition","parameters":{"id":9010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9005,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2587:4:13","nodeType":"VariableDeclaration","scope":9011,"src":"2571:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9004,"name":"address","nodeType":"ElementaryTypeName","src":"2571:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9007,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2609:2:13","nodeType":"VariableDeclaration","scope":9011,"src":"2593:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9006,"name":"address","nodeType":"ElementaryTypeName","src":"2593:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9009,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"2621:5:13","nodeType":"VariableDeclaration","scope":9011,"src":"2613:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9008,"name":"uint256","nodeType":"ElementaryTypeName","src":"2613:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2570:57:13"},"src":"2556:72:13"},{"anonymous":false,"documentation":{"id":9012,"nodeType":"StructuredDocumentation","src":"2634:321:13","text":"@notice Event emitted when the approval amount for the spender of a given owner's tokens changes.\n @param owner The account that approved spending of its tokens\n @param spender The account for which the spending allowance was modified\n @param value The new allowance from the owner to the spender"},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":9020,"name":"Approval","nameLocation":"2966:8:13","nodeType":"EventDefinition","parameters":{"id":9019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9014,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2991:5:13","nodeType":"VariableDeclaration","scope":9020,"src":"2975:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9013,"name":"address","nodeType":"ElementaryTypeName","src":"2975:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9016,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"3014:7:13","nodeType":"VariableDeclaration","scope":9020,"src":"2998:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9015,"name":"address","nodeType":"ElementaryTypeName","src":"2998:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9018,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"3031:5:13","nodeType":"VariableDeclaration","scope":9020,"src":"3023:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3023:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2974:63:13"},"src":"2960:78:13"}],"scope":9022,"src":"189:2851:13","usedErrors":[],"usedEvents":[9011,9020]}],"src":"32:3009:13"},"id":13},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC6909Claims.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC6909Claims.sol","exportedSymbols":{"IERC6909Claims":[7569]},"id":7570,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7457,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6909Claims","contractDependencies":[],"contractKind":"interface","documentation":{"id":7458,"nodeType":"StructuredDocumentation","src":"57:79:14","text":"@notice Interface for claims over a contract balance, wrapped as a ERC6909"},"fullyImplemented":false,"id":7569,"linearizedBaseContracts":[7569],"name":"IERC6909Claims","nameLocation":"146:14:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"ceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267","id":7466,"name":"OperatorSet","nameLocation":"352:11:14","nodeType":"EventDefinition","parameters":{"id":7465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7460,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"380:5:14","nodeType":"VariableDeclaration","scope":7466,"src":"364:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7459,"name":"address","nodeType":"ElementaryTypeName","src":"364:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7462,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"403:8:14","nodeType":"VariableDeclaration","scope":7466,"src":"387:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7461,"name":"address","nodeType":"ElementaryTypeName","src":"387:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7464,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"418:8:14","nodeType":"VariableDeclaration","scope":7466,"src":"413:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7463,"name":"bool","nodeType":"ElementaryTypeName","src":"413:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"363:64:14"},"src":"346:82:14"},{"anonymous":false,"eventSelector":"b3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7","id":7476,"name":"Approval","nameLocation":"440:8:14","nodeType":"EventDefinition","parameters":{"id":7475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7468,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"465:5:14","nodeType":"VariableDeclaration","scope":7476,"src":"449:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7467,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7470,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"488:7:14","nodeType":"VariableDeclaration","scope":7476,"src":"472:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7469,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7472,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"513:2:14","nodeType":"VariableDeclaration","scope":7476,"src":"497:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7471,"name":"uint256","nodeType":"ElementaryTypeName","src":"497:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7474,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"525:6:14","nodeType":"VariableDeclaration","scope":7476,"src":"517:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7473,"name":"uint256","nodeType":"ElementaryTypeName","src":"517:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"448:84:14"},"src":"434:99:14"},{"anonymous":false,"eventSelector":"1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859","id":7488,"name":"Transfer","nameLocation":"545:8:14","nodeType":"EventDefinition","parameters":{"id":7487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7478,"indexed":false,"mutability":"mutable","name":"caller","nameLocation":"562:6:14","nodeType":"VariableDeclaration","scope":7488,"src":"554:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7477,"name":"address","nodeType":"ElementaryTypeName","src":"554:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7480,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"586:4:14","nodeType":"VariableDeclaration","scope":7488,"src":"570:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7479,"name":"address","nodeType":"ElementaryTypeName","src":"570:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7482,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"608:2:14","nodeType":"VariableDeclaration","scope":7488,"src":"592:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7481,"name":"address","nodeType":"ElementaryTypeName","src":"592:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7484,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"628:2:14","nodeType":"VariableDeclaration","scope":7488,"src":"612:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7483,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7486,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"640:6:14","nodeType":"VariableDeclaration","scope":7488,"src":"632:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7485,"name":"uint256","nodeType":"ElementaryTypeName","src":"632:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"553:94:14"},"src":"539:109:14"},{"documentation":{"id":7489,"nodeType":"StructuredDocumentation","src":"836:170:14","text":"@notice Owner balance of an id.\n @param owner The address of the owner.\n @param id The id of the token.\n @return amount The balance of the token."},"functionSelector":"00fdd58e","id":7498,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1020:9:14","nodeType":"FunctionDefinition","parameters":{"id":7494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7491,"mutability":"mutable","name":"owner","nameLocation":"1038:5:14","nodeType":"VariableDeclaration","scope":7498,"src":"1030:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7490,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7493,"mutability":"mutable","name":"id","nameLocation":"1053:2:14","nodeType":"VariableDeclaration","scope":7498,"src":"1045:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7492,"name":"uint256","nodeType":"ElementaryTypeName","src":"1045:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1029:27:14"},"returnParameters":{"id":7497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7496,"mutability":"mutable","name":"amount","nameLocation":"1088:6:14","nodeType":"VariableDeclaration","scope":7498,"src":"1080:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7495,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1079:16:14"},"scope":7569,"src":"1011:85:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7499,"nodeType":"StructuredDocumentation","src":"1102:227:14","text":"@notice Spender allowance of an id.\n @param owner The address of the owner.\n @param spender The address of the spender.\n @param id The id of the token.\n @return amount The allowance of the token."},"functionSelector":"598af9e7","id":7510,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1343:9:14","nodeType":"FunctionDefinition","parameters":{"id":7506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7501,"mutability":"mutable","name":"owner","nameLocation":"1361:5:14","nodeType":"VariableDeclaration","scope":7510,"src":"1353:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7500,"name":"address","nodeType":"ElementaryTypeName","src":"1353:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7503,"mutability":"mutable","name":"spender","nameLocation":"1376:7:14","nodeType":"VariableDeclaration","scope":7510,"src":"1368:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7502,"name":"address","nodeType":"ElementaryTypeName","src":"1368:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7505,"mutability":"mutable","name":"id","nameLocation":"1393:2:14","nodeType":"VariableDeclaration","scope":7510,"src":"1385:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7504,"name":"uint256","nodeType":"ElementaryTypeName","src":"1385:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1352:44:14"},"returnParameters":{"id":7509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7508,"mutability":"mutable","name":"amount","nameLocation":"1428:6:14","nodeType":"VariableDeclaration","scope":7510,"src":"1420:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7507,"name":"uint256","nodeType":"ElementaryTypeName","src":"1420:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1419:16:14"},"scope":7569,"src":"1334:102:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7511,"nodeType":"StructuredDocumentation","src":"1442:214:14","text":"@notice Checks if a spender is approved by an owner as an operator\n @param owner The address of the owner.\n @param spender The address of the spender.\n @return approved The approval status."},"functionSelector":"b6363cf2","id":7520,"implemented":false,"kind":"function","modifiers":[],"name":"isOperator","nameLocation":"1670:10:14","nodeType":"FunctionDefinition","parameters":{"id":7516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7513,"mutability":"mutable","name":"owner","nameLocation":"1689:5:14","nodeType":"VariableDeclaration","scope":7520,"src":"1681:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7512,"name":"address","nodeType":"ElementaryTypeName","src":"1681:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7515,"mutability":"mutable","name":"spender","nameLocation":"1704:7:14","nodeType":"VariableDeclaration","scope":7520,"src":"1696:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7514,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1680:32:14"},"returnParameters":{"id":7519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7518,"mutability":"mutable","name":"approved","nameLocation":"1741:8:14","nodeType":"VariableDeclaration","scope":7520,"src":"1736:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7517,"name":"bool","nodeType":"ElementaryTypeName","src":"1736:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1735:15:14"},"scope":7569,"src":"1661:90:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7521,"nodeType":"StructuredDocumentation","src":"1757:273:14","text":"@notice Transfers an amount of an id from the caller to a receiver.\n @param receiver The address of the receiver.\n @param id The id of the token.\n @param amount The amount of the token.\n @return bool True, always, unless the function reverts"},"functionSelector":"095bcdb6","id":7532,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"2044:8:14","nodeType":"FunctionDefinition","parameters":{"id":7528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7523,"mutability":"mutable","name":"receiver","nameLocation":"2061:8:14","nodeType":"VariableDeclaration","scope":7532,"src":"2053:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7522,"name":"address","nodeType":"ElementaryTypeName","src":"2053:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7525,"mutability":"mutable","name":"id","nameLocation":"2079:2:14","nodeType":"VariableDeclaration","scope":7532,"src":"2071:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7524,"name":"uint256","nodeType":"ElementaryTypeName","src":"2071:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7527,"mutability":"mutable","name":"amount","nameLocation":"2091:6:14","nodeType":"VariableDeclaration","scope":7532,"src":"2083:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2083:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2052:46:14"},"returnParameters":{"id":7531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7530,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7532,"src":"2117:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7529,"name":"bool","nodeType":"ElementaryTypeName","src":"2117:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2116:6:14"},"scope":7569,"src":"2035:88:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7533,"nodeType":"StructuredDocumentation","src":"2129:320:14","text":"@notice Transfers an amount of an id from a sender to a receiver.\n @param sender The address of the sender.\n @param receiver The address of the receiver.\n @param id The id of the token.\n @param amount The amount of the token.\n @return bool True, always, unless the function reverts"},"functionSelector":"fe99049a","id":7546,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2463:12:14","nodeType":"FunctionDefinition","parameters":{"id":7542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7535,"mutability":"mutable","name":"sender","nameLocation":"2484:6:14","nodeType":"VariableDeclaration","scope":7546,"src":"2476:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7534,"name":"address","nodeType":"ElementaryTypeName","src":"2476:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7537,"mutability":"mutable","name":"receiver","nameLocation":"2500:8:14","nodeType":"VariableDeclaration","scope":7546,"src":"2492:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7536,"name":"address","nodeType":"ElementaryTypeName","src":"2492:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7539,"mutability":"mutable","name":"id","nameLocation":"2518:2:14","nodeType":"VariableDeclaration","scope":7546,"src":"2510:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7538,"name":"uint256","nodeType":"ElementaryTypeName","src":"2510:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7541,"mutability":"mutable","name":"amount","nameLocation":"2530:6:14","nodeType":"VariableDeclaration","scope":7546,"src":"2522:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7540,"name":"uint256","nodeType":"ElementaryTypeName","src":"2522:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2475:62:14"},"returnParameters":{"id":7545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7546,"src":"2556:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7543,"name":"bool","nodeType":"ElementaryTypeName","src":"2556:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2555:6:14"},"scope":7569,"src":"2454:108:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7547,"nodeType":"StructuredDocumentation","src":"2568:224:14","text":"@notice Approves an amount of an id to a spender.\n @param spender The address of the spender.\n @param id The id of the token.\n @param amount The amount of the token.\n @return bool True, always"},"functionSelector":"426a8493","id":7558,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2806:7:14","nodeType":"FunctionDefinition","parameters":{"id":7554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7549,"mutability":"mutable","name":"spender","nameLocation":"2822:7:14","nodeType":"VariableDeclaration","scope":7558,"src":"2814:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7548,"name":"address","nodeType":"ElementaryTypeName","src":"2814:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7551,"mutability":"mutable","name":"id","nameLocation":"2839:2:14","nodeType":"VariableDeclaration","scope":7558,"src":"2831:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7550,"name":"uint256","nodeType":"ElementaryTypeName","src":"2831:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7553,"mutability":"mutable","name":"amount","nameLocation":"2851:6:14","nodeType":"VariableDeclaration","scope":7558,"src":"2843:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7552,"name":"uint256","nodeType":"ElementaryTypeName","src":"2843:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2813:45:14"},"returnParameters":{"id":7557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7558,"src":"2877:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7555,"name":"bool","nodeType":"ElementaryTypeName","src":"2877:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2876:6:14"},"scope":7569,"src":"2797:86:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7559,"nodeType":"StructuredDocumentation","src":"2889:187:14","text":"@notice Sets or removes an operator for the caller.\n @param operator The address of the operator.\n @param approved The approval status.\n @return bool True, always"},"functionSelector":"558a7297","id":7568,"implemented":false,"kind":"function","modifiers":[],"name":"setOperator","nameLocation":"3090:11:14","nodeType":"FunctionDefinition","parameters":{"id":7564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7561,"mutability":"mutable","name":"operator","nameLocation":"3110:8:14","nodeType":"VariableDeclaration","scope":7568,"src":"3102:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7560,"name":"address","nodeType":"ElementaryTypeName","src":"3102:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7563,"mutability":"mutable","name":"approved","nameLocation":"3125:8:14","nodeType":"VariableDeclaration","scope":7568,"src":"3120:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7562,"name":"bool","nodeType":"ElementaryTypeName","src":"3120:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3101:33:14"},"returnParameters":{"id":7567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7568,"src":"3153:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7565,"name":"bool","nodeType":"ElementaryTypeName","src":"3153:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3152:6:14"},"scope":7569,"src":"3081:78:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7570,"src":"136:3025:14","usedErrors":[],"usedEvents":[7466,7476,7488]}],"src":"32:3130:14"},"id":14},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/BitMath.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/BitMath.sol","exportedSymbols":{"BitMath":[8949]},"id":8950,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8915,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:15"},{"abstract":false,"baseContracts":[],"canonicalName":"BitMath","contractDependencies":[],"contractKind":"library","documentation":{"id":8916,"nodeType":"StructuredDocumentation","src":"57:241:15","text":"@title BitMath\n @dev This library provides functionality for computing bit properties of an unsigned integer\n @author Solady (https://github.com/Vectorized/solady/blob/8200a70e8dc2a77ecb074fc2e99a2a0d36547522/src/utils/LibBit.sol)"},"fullyImplemented":true,"id":8949,"linearizedBaseContracts":[8949],"name":"BitMath","nameLocation":"306:7:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":8931,"nodeType":"Block","src":"724:593:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8925,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"742:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"746:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"742:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8924,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"734:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:14:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8929,"nodeType":"ExpressionStatement","src":"734:14:15"},{"AST":{"nativeSrc":"784:527:15","nodeType":"YulBlock","src":"784:527:15","statements":[{"nativeSrc":"798:54:15","nodeType":"YulAssignment","src":"798:54:15","value":{"arguments":[{"kind":"number","nativeSrc":"807:1:15","nodeType":"YulLiteral","src":"807:1:15","type":"","value":"7"},{"arguments":[{"kind":"number","nativeSrc":"813:34:15","nodeType":"YulLiteral","src":"813:34:15","type":"","value":"0xffffffffffffffffffffffffffffffff"},{"name":"x","nativeSrc":"849:1:15","nodeType":"YulIdentifier","src":"849:1:15"}],"functionName":{"name":"lt","nativeSrc":"810:2:15","nodeType":"YulIdentifier","src":"810:2:15"},"nativeSrc":"810:41:15","nodeType":"YulFunctionCall","src":"810:41:15"}],"functionName":{"name":"shl","nativeSrc":"803:3:15","nodeType":"YulIdentifier","src":"803:3:15"},"nativeSrc":"803:49:15","nodeType":"YulFunctionCall","src":"803:49:15"},"variableNames":[{"name":"r","nativeSrc":"798:1:15","nodeType":"YulIdentifier","src":"798:1:15"}]},{"nativeSrc":"865:53:15","nodeType":"YulAssignment","src":"865:53:15","value":{"arguments":[{"name":"r","nativeSrc":"873:1:15","nodeType":"YulIdentifier","src":"873:1:15"},{"arguments":[{"kind":"number","nativeSrc":"880:1:15","nodeType":"YulLiteral","src":"880:1:15","type":"","value":"6"},{"arguments":[{"kind":"number","nativeSrc":"886:18:15","nodeType":"YulLiteral","src":"886:18:15","type":"","value":"0xffffffffffffffff"},{"arguments":[{"name":"r","nativeSrc":"910:1:15","nodeType":"YulIdentifier","src":"910:1:15"},{"name":"x","nativeSrc":"913:1:15","nodeType":"YulIdentifier","src":"913:1:15"}],"functionName":{"name":"shr","nativeSrc":"906:3:15","nodeType":"YulIdentifier","src":"906:3:15"},"nativeSrc":"906:9:15","nodeType":"YulFunctionCall","src":"906:9:15"}],"functionName":{"name":"lt","nativeSrc":"883:2:15","nodeType":"YulIdentifier","src":"883:2:15"},"nativeSrc":"883:33:15","nodeType":"YulFunctionCall","src":"883:33:15"}],"functionName":{"name":"shl","nativeSrc":"876:3:15","nodeType":"YulIdentifier","src":"876:3:15"},"nativeSrc":"876:41:15","nodeType":"YulFunctionCall","src":"876:41:15"}],"functionName":{"name":"or","nativeSrc":"870:2:15","nodeType":"YulIdentifier","src":"870:2:15"},"nativeSrc":"870:48:15","nodeType":"YulFunctionCall","src":"870:48:15"},"variableNames":[{"name":"r","nativeSrc":"865:1:15","nodeType":"YulIdentifier","src":"865:1:15"}]},{"nativeSrc":"931:45:15","nodeType":"YulAssignment","src":"931:45:15","value":{"arguments":[{"name":"r","nativeSrc":"939:1:15","nodeType":"YulIdentifier","src":"939:1:15"},{"arguments":[{"kind":"number","nativeSrc":"946:1:15","nodeType":"YulLiteral","src":"946:1:15","type":"","value":"5"},{"arguments":[{"kind":"number","nativeSrc":"952:10:15","nodeType":"YulLiteral","src":"952:10:15","type":"","value":"0xffffffff"},{"arguments":[{"name":"r","nativeSrc":"968:1:15","nodeType":"YulIdentifier","src":"968:1:15"},{"name":"x","nativeSrc":"971:1:15","nodeType":"YulIdentifier","src":"971:1:15"}],"functionName":{"name":"shr","nativeSrc":"964:3:15","nodeType":"YulIdentifier","src":"964:3:15"},"nativeSrc":"964:9:15","nodeType":"YulFunctionCall","src":"964:9:15"}],"functionName":{"name":"lt","nativeSrc":"949:2:15","nodeType":"YulIdentifier","src":"949:2:15"},"nativeSrc":"949:25:15","nodeType":"YulFunctionCall","src":"949:25:15"}],"functionName":{"name":"shl","nativeSrc":"942:3:15","nodeType":"YulIdentifier","src":"942:3:15"},"nativeSrc":"942:33:15","nodeType":"YulFunctionCall","src":"942:33:15"}],"functionName":{"name":"or","nativeSrc":"936:2:15","nodeType":"YulIdentifier","src":"936:2:15"},"nativeSrc":"936:40:15","nodeType":"YulFunctionCall","src":"936:40:15"},"variableNames":[{"name":"r","nativeSrc":"931:1:15","nodeType":"YulIdentifier","src":"931:1:15"}]},{"nativeSrc":"989:41:15","nodeType":"YulAssignment","src":"989:41:15","value":{"arguments":[{"name":"r","nativeSrc":"997:1:15","nodeType":"YulIdentifier","src":"997:1:15"},{"arguments":[{"kind":"number","nativeSrc":"1004:1:15","nodeType":"YulLiteral","src":"1004:1:15","type":"","value":"4"},{"arguments":[{"kind":"number","nativeSrc":"1010:6:15","nodeType":"YulLiteral","src":"1010:6:15","type":"","value":"0xffff"},{"arguments":[{"name":"r","nativeSrc":"1022:1:15","nodeType":"YulIdentifier","src":"1022:1:15"},{"name":"x","nativeSrc":"1025:1:15","nodeType":"YulIdentifier","src":"1025:1:15"}],"functionName":{"name":"shr","nativeSrc":"1018:3:15","nodeType":"YulIdentifier","src":"1018:3:15"},"nativeSrc":"1018:9:15","nodeType":"YulFunctionCall","src":"1018:9:15"}],"functionName":{"name":"lt","nativeSrc":"1007:2:15","nodeType":"YulIdentifier","src":"1007:2:15"},"nativeSrc":"1007:21:15","nodeType":"YulFunctionCall","src":"1007:21:15"}],"functionName":{"name":"shl","nativeSrc":"1000:3:15","nodeType":"YulIdentifier","src":"1000:3:15"},"nativeSrc":"1000:29:15","nodeType":"YulFunctionCall","src":"1000:29:15"}],"functionName":{"name":"or","nativeSrc":"994:2:15","nodeType":"YulIdentifier","src":"994:2:15"},"nativeSrc":"994:36:15","nodeType":"YulFunctionCall","src":"994:36:15"},"variableNames":[{"name":"r","nativeSrc":"989:1:15","nodeType":"YulIdentifier","src":"989:1:15"}]},{"nativeSrc":"1043:39:15","nodeType":"YulAssignment","src":"1043:39:15","value":{"arguments":[{"name":"r","nativeSrc":"1051:1:15","nodeType":"YulIdentifier","src":"1051:1:15"},{"arguments":[{"kind":"number","nativeSrc":"1058:1:15","nodeType":"YulLiteral","src":"1058:1:15","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"1064:4:15","nodeType":"YulLiteral","src":"1064:4:15","type":"","value":"0xff"},{"arguments":[{"name":"r","nativeSrc":"1074:1:15","nodeType":"YulIdentifier","src":"1074:1:15"},{"name":"x","nativeSrc":"1077:1:15","nodeType":"YulIdentifier","src":"1077:1:15"}],"functionName":{"name":"shr","nativeSrc":"1070:3:15","nodeType":"YulIdentifier","src":"1070:3:15"},"nativeSrc":"1070:9:15","nodeType":"YulFunctionCall","src":"1070:9:15"}],"functionName":{"name":"lt","nativeSrc":"1061:2:15","nodeType":"YulIdentifier","src":"1061:2:15"},"nativeSrc":"1061:19:15","nodeType":"YulFunctionCall","src":"1061:19:15"}],"functionName":{"name":"shl","nativeSrc":"1054:3:15","nodeType":"YulIdentifier","src":"1054:3:15"},"nativeSrc":"1054:27:15","nodeType":"YulFunctionCall","src":"1054:27:15"}],"functionName":{"name":"or","nativeSrc":"1048:2:15","nodeType":"YulIdentifier","src":"1048:2:15"},"nativeSrc":"1048:34:15","nodeType":"YulFunctionCall","src":"1048:34:15"},"variableNames":[{"name":"r","nativeSrc":"1043:1:15","nodeType":"YulIdentifier","src":"1043:1:15"}]},{"nativeSrc":"1138:163:15","nodeType":"YulAssignment","src":"1138:163:15","value":{"arguments":[{"name":"r","nativeSrc":"1146:1:15","nodeType":"YulIdentifier","src":"1146:1:15"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1158:4:15","nodeType":"YulLiteral","src":"1158:4:15","type":"","value":"0x1f"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"1172:1:15","nodeType":"YulIdentifier","src":"1172:1:15"},{"name":"x","nativeSrc":"1175:1:15","nodeType":"YulIdentifier","src":"1175:1:15"}],"functionName":{"name":"shr","nativeSrc":"1168:3:15","nodeType":"YulIdentifier","src":"1168:3:15"},"nativeSrc":"1168:9:15","nodeType":"YulFunctionCall","src":"1168:9:15"},{"kind":"number","nativeSrc":"1179:34:15","nodeType":"YulLiteral","src":"1179:34:15","type":"","value":"0x8421084210842108cc6318c6db6d54be"}],"functionName":{"name":"shr","nativeSrc":"1164:3:15","nodeType":"YulIdentifier","src":"1164:3:15"},"nativeSrc":"1164:50:15","nodeType":"YulFunctionCall","src":"1164:50:15"}],"functionName":{"name":"and","nativeSrc":"1154:3:15","nodeType":"YulIdentifier","src":"1154:3:15"},"nativeSrc":"1154:61:15","nodeType":"YulFunctionCall","src":"1154:61:15"},{"kind":"number","nativeSrc":"1233:66:15","nodeType":"YulLiteral","src":"1233:66:15","type":"","value":"0x0706060506020500060203020504000106050205030304010505030400000000"}],"functionName":{"name":"byte","nativeSrc":"1149:4:15","nodeType":"YulIdentifier","src":"1149:4:15"},"nativeSrc":"1149:151:15","nodeType":"YulFunctionCall","src":"1149:151:15"}],"functionName":{"name":"or","nativeSrc":"1143:2:15","nodeType":"YulIdentifier","src":"1143:2:15"},"nativeSrc":"1143:158:15","nodeType":"YulFunctionCall","src":"1143:158:15"},"variableNames":[{"name":"r","nativeSrc":"1138:1:15","nodeType":"YulIdentifier","src":"1138:1:15"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8922,"isOffset":false,"isSlot":false,"src":"1022:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"1043:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"1051:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"1074:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"1138:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"1146:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"1172:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"798:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"865:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"873:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"910:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"931:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"939:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"968:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"989:1:15","valueSize":1},{"declaration":8922,"isOffset":false,"isSlot":false,"src":"997:1:15","valueSize":1},{"declaration":8919,"isOffset":false,"isSlot":false,"src":"1025:1:15","valueSize":1},{"declaration":8919,"isOffset":false,"isSlot":false,"src":"1077:1:15","valueSize":1},{"declaration":8919,"isOffset":false,"isSlot":false,"src":"1175:1:15","valueSize":1},{"declaration":8919,"isOffset":false,"isSlot":false,"src":"849:1:15","valueSize":1},{"declaration":8919,"isOffset":false,"isSlot":false,"src":"913:1:15","valueSize":1},{"declaration":8919,"isOffset":false,"isSlot":false,"src":"971:1:15","valueSize":1}],"flags":["memory-safe"],"id":8930,"nodeType":"InlineAssembly","src":"759:552:15"}]},"documentation":{"id":8917,"nodeType":"StructuredDocumentation","src":"320:328:15","text":"@notice Returns the index of the most significant bit of the number,\n     where the least significant bit is at index 0 and the most significant bit is at index 255\n @param x the value for which to compute the most significant bit, must be greater than 0\n @return r the index of the most significant bit"},"id":8932,"implemented":true,"kind":"function","modifiers":[],"name":"mostSignificantBit","nameLocation":"662:18:15","nodeType":"FunctionDefinition","parameters":{"id":8920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8919,"mutability":"mutable","name":"x","nameLocation":"689:1:15","nodeType":"VariableDeclaration","scope":8932,"src":"681:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8918,"name":"uint256","nodeType":"ElementaryTypeName","src":"681:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"680:11:15"},"returnParameters":{"id":8923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8922,"mutability":"mutable","name":"r","nameLocation":"721:1:15","nodeType":"VariableDeclaration","scope":8932,"src":"715:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8921,"name":"uint8","nodeType":"ElementaryTypeName","src":"715:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"714:9:15"},"scope":8949,"src":"653:664:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8947,"nodeType":"Block","src":"1731:875:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8941,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"1749:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1753:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1749:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8940,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1741:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1741:14:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8945,"nodeType":"ExpressionStatement","src":"1741:14:15"},{"AST":{"nativeSrc":"1791:809:15","nodeType":"YulBlock","src":"1791:809:15","statements":[{"nativeSrc":"1855:22:15","nodeType":"YulAssignment","src":"1855:22:15","value":{"arguments":[{"name":"x","nativeSrc":"1864:1:15","nodeType":"YulIdentifier","src":"1864:1:15"},{"arguments":[{"kind":"number","nativeSrc":"1871:1:15","nodeType":"YulLiteral","src":"1871:1:15","type":"","value":"0"},{"name":"x","nativeSrc":"1874:1:15","nodeType":"YulIdentifier","src":"1874:1:15"}],"functionName":{"name":"sub","nativeSrc":"1867:3:15","nodeType":"YulIdentifier","src":"1867:3:15"},"nativeSrc":"1867:9:15","nodeType":"YulFunctionCall","src":"1867:9:15"}],"functionName":{"name":"and","nativeSrc":"1860:3:15","nodeType":"YulIdentifier","src":"1860:3:15"},"nativeSrc":"1860:17:15","nodeType":"YulFunctionCall","src":"1860:17:15"},"variableNames":[{"name":"x","nativeSrc":"1855:1:15","nodeType":"YulIdentifier","src":"1855:1:15"}]},{"nativeSrc":"2100:220:15","nodeType":"YulAssignment","src":"2100:220:15","value":{"arguments":[{"kind":"number","nativeSrc":"2109:1:15","nodeType":"YulLiteral","src":"2109:1:15","type":"","value":"5"},{"arguments":[{"kind":"number","nativeSrc":"2116:3:15","nodeType":"YulLiteral","src":"2116:3:15","type":"","value":"252"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2129:1:15","nodeType":"YulLiteral","src":"2129:1:15","type":"","value":"2"},{"arguments":[{"kind":"number","nativeSrc":"2136:3:15","nodeType":"YulLiteral","src":"2136:3:15","type":"","value":"250"},{"arguments":[{"name":"x","nativeSrc":"2145:1:15","nodeType":"YulIdentifier","src":"2145:1:15"},{"kind":"number","nativeSrc":"2164:66:15","nodeType":"YulLiteral","src":"2164:66:15","type":"","value":"0xb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff"}],"functionName":{"name":"mul","nativeSrc":"2141:3:15","nodeType":"YulIdentifier","src":"2141:3:15"},"nativeSrc":"2141:90:15","nodeType":"YulFunctionCall","src":"2141:90:15"}],"functionName":{"name":"shr","nativeSrc":"2132:3:15","nodeType":"YulIdentifier","src":"2132:3:15"},"nativeSrc":"2132:100:15","nodeType":"YulFunctionCall","src":"2132:100:15"}],"functionName":{"name":"shl","nativeSrc":"2125:3:15","nodeType":"YulIdentifier","src":"2125:3:15"},"nativeSrc":"2125:108:15","nodeType":"YulFunctionCall","src":"2125:108:15"},{"kind":"number","nativeSrc":"2251:66:15","nodeType":"YulLiteral","src":"2251:66:15","type":"","value":"0x8040405543005266443200005020610674053026020000107506200176117077"}],"functionName":{"name":"shl","nativeSrc":"2121:3:15","nodeType":"YulIdentifier","src":"2121:3:15"},"nativeSrc":"2121:197:15","nodeType":"YulFunctionCall","src":"2121:197:15"}],"functionName":{"name":"shr","nativeSrc":"2112:3:15","nodeType":"YulIdentifier","src":"2112:3:15"},"nativeSrc":"2112:207:15","nodeType":"YulFunctionCall","src":"2112:207:15"}],"functionName":{"name":"shl","nativeSrc":"2105:3:15","nodeType":"YulIdentifier","src":"2105:3:15"},"nativeSrc":"2105:215:15","nodeType":"YulFunctionCall","src":"2105:215:15"},"variableNames":[{"name":"r","nativeSrc":"2100:1:15","nodeType":"YulIdentifier","src":"2100:1:15"}]},{"nativeSrc":"2451:139:15","nodeType":"YulAssignment","src":"2451:139:15","value":{"arguments":[{"name":"r","nativeSrc":"2459:1:15","nodeType":"YulIdentifier","src":"2459:1:15"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2475:10:15","nodeType":"YulLiteral","src":"2475:10:15","type":"","value":"0xd76453e0"},{"arguments":[{"name":"r","nativeSrc":"2491:1:15","nodeType":"YulIdentifier","src":"2491:1:15"},{"name":"x","nativeSrc":"2494:1:15","nodeType":"YulIdentifier","src":"2494:1:15"}],"functionName":{"name":"shr","nativeSrc":"2487:3:15","nodeType":"YulIdentifier","src":"2487:3:15"},"nativeSrc":"2487:9:15","nodeType":"YulFunctionCall","src":"2487:9:15"}],"functionName":{"name":"div","nativeSrc":"2471:3:15","nodeType":"YulIdentifier","src":"2471:3:15"},"nativeSrc":"2471:26:15","nodeType":"YulFunctionCall","src":"2471:26:15"},{"kind":"number","nativeSrc":"2499:4:15","nodeType":"YulLiteral","src":"2499:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nativeSrc":"2467:3:15","nodeType":"YulIdentifier","src":"2467:3:15"},"nativeSrc":"2467:37:15","nodeType":"YulFunctionCall","src":"2467:37:15"},{"kind":"number","nativeSrc":"2522:66:15","nodeType":"YulLiteral","src":"2522:66:15","type":"","value":"0x001f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405"}],"functionName":{"name":"byte","nativeSrc":"2462:4:15","nodeType":"YulIdentifier","src":"2462:4:15"},"nativeSrc":"2462:127:15","nodeType":"YulFunctionCall","src":"2462:127:15"}],"functionName":{"name":"or","nativeSrc":"2456:2:15","nodeType":"YulIdentifier","src":"2456:2:15"},"nativeSrc":"2456:134:15","nodeType":"YulFunctionCall","src":"2456:134:15"},"variableNames":[{"name":"r","nativeSrc":"2451:1:15","nodeType":"YulIdentifier","src":"2451:1:15"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8938,"isOffset":false,"isSlot":false,"src":"2100:1:15","valueSize":1},{"declaration":8938,"isOffset":false,"isSlot":false,"src":"2451:1:15","valueSize":1},{"declaration":8938,"isOffset":false,"isSlot":false,"src":"2459:1:15","valueSize":1},{"declaration":8938,"isOffset":false,"isSlot":false,"src":"2491:1:15","valueSize":1},{"declaration":8935,"isOffset":false,"isSlot":false,"src":"1855:1:15","valueSize":1},{"declaration":8935,"isOffset":false,"isSlot":false,"src":"1864:1:15","valueSize":1},{"declaration":8935,"isOffset":false,"isSlot":false,"src":"1874:1:15","valueSize":1},{"declaration":8935,"isOffset":false,"isSlot":false,"src":"2145:1:15","valueSize":1},{"declaration":8935,"isOffset":false,"isSlot":false,"src":"2494:1:15","valueSize":1}],"flags":["memory-safe"],"id":8946,"nodeType":"InlineAssembly","src":"1766:834:15"}]},"documentation":{"id":8933,"nodeType":"StructuredDocumentation","src":"1323:331:15","text":"@notice Returns the index of the least significant bit of the number,\n     where the least significant bit is at index 0 and the most significant bit is at index 255\n @param x the value for which to compute the least significant bit, must be greater than 0\n @return r the index of the least significant bit"},"id":8948,"implemented":true,"kind":"function","modifiers":[],"name":"leastSignificantBit","nameLocation":"1668:19:15","nodeType":"FunctionDefinition","parameters":{"id":8936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8935,"mutability":"mutable","name":"x","nameLocation":"1696:1:15","nodeType":"VariableDeclaration","scope":8948,"src":"1688:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1688:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1687:11:15"},"returnParameters":{"id":8939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8938,"mutability":"mutable","name":"r","nameLocation":"1728:1:15","nodeType":"VariableDeclaration","scope":8948,"src":"1722:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8937,"name":"uint8","nodeType":"ElementaryTypeName","src":"1722:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1721:9:15"},"scope":8949,"src":"1659:947:15","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8950,"src":"298:2310:15","usedErrors":[],"usedEvents":[]}],"src":"32:2577:15"},"id":15},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyDelta.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyDelta.sol","exportedSymbols":{"Currency":[6525],"CurrencyDelta":[2204]},"id":2205,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":2137,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"37:24:16"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","file":"../types/Currency.sol","id":2139,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2205,"sourceUnit":6820,"src":"63:47:16","symbolAliases":[{"foreign":{"id":2138,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"71:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CurrencyDelta","contractDependencies":[],"contractKind":"library","documentation":{"id":2140,"nodeType":"StructuredDocumentation","src":"112:192:16","text":"@title a library to store callers' currency deltas in transient storage\n @dev this library implements the equivalent of a mapping, as transient storage can only be accessed in assembly"},"fullyImplemented":true,"id":2204,"linearizedBaseContracts":[2204],"name":"CurrencyDelta","nameLocation":"312:13:16","nodeType":"ContractDefinition","nodes":[{"body":{"id":2152,"nodeType":"Block","src":"537:254:16","statements":[{"AST":{"nativeSrc":"572:213:16","nodeType":"YulBlock","src":"572:213:16","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"593:1:16","nodeType":"YulLiteral","src":"593:1:16","type":"","value":"0"},{"arguments":[{"name":"target","nativeSrc":"600:6:16","nodeType":"YulIdentifier","src":"600:6:16"},{"kind":"number","nativeSrc":"608:42:16","nodeType":"YulLiteral","src":"608:42:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"596:3:16","nodeType":"YulIdentifier","src":"596:3:16"},"nativeSrc":"596:55:16","nodeType":"YulFunctionCall","src":"596:55:16"}],"functionName":{"name":"mstore","nativeSrc":"586:6:16","nodeType":"YulIdentifier","src":"586:6:16"},"nativeSrc":"586:66:16","nodeType":"YulFunctionCall","src":"586:66:16"},"nativeSrc":"586:66:16","nodeType":"YulExpressionStatement","src":"586:66:16"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"672:2:16","nodeType":"YulLiteral","src":"672:2:16","type":"","value":"32"},{"arguments":[{"name":"currency","nativeSrc":"680:8:16","nodeType":"YulIdentifier","src":"680:8:16"},{"kind":"number","nativeSrc":"690:42:16","nodeType":"YulLiteral","src":"690:42:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"676:3:16","nodeType":"YulIdentifier","src":"676:3:16"},"nativeSrc":"676:57:16","nodeType":"YulFunctionCall","src":"676:57:16"}],"functionName":{"name":"mstore","nativeSrc":"665:6:16","nodeType":"YulIdentifier","src":"665:6:16"},"nativeSrc":"665:69:16","nodeType":"YulFunctionCall","src":"665:69:16"},"nativeSrc":"665:69:16","nodeType":"YulExpressionStatement","src":"665:69:16"},{"nativeSrc":"747:28:16","nodeType":"YulAssignment","src":"747:28:16","value":{"arguments":[{"kind":"number","nativeSrc":"769:1:16","nodeType":"YulLiteral","src":"769:1:16","type":"","value":"0"},{"kind":"number","nativeSrc":"772:2:16","nodeType":"YulLiteral","src":"772:2:16","type":"","value":"64"}],"functionName":{"name":"keccak256","nativeSrc":"759:9:16","nodeType":"YulIdentifier","src":"759:9:16"},"nativeSrc":"759:16:16","nodeType":"YulFunctionCall","src":"759:16:16"},"variableNames":[{"name":"hashSlot","nativeSrc":"747:8:16","nodeType":"YulIdentifier","src":"747:8:16"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2146,"isOffset":false,"isSlot":false,"src":"680:8:16","valueSize":1},{"declaration":2149,"isOffset":false,"isSlot":false,"src":"747:8:16","valueSize":1},{"declaration":2143,"isOffset":false,"isSlot":false,"src":"600:6:16","valueSize":1}],"flags":["memory-safe"],"id":2151,"nodeType":"InlineAssembly","src":"547:238:16"}]},"documentation":{"id":2141,"nodeType":"StructuredDocumentation","src":"332:102:16","text":"@notice calculates which storage slot a delta should be stored in for a given account and currency"},"id":2153,"implemented":true,"kind":"function","modifiers":[],"name":"_computeSlot","nameLocation":"448:12:16","nodeType":"FunctionDefinition","parameters":{"id":2147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2143,"mutability":"mutable","name":"target","nameLocation":"469:6:16","nodeType":"VariableDeclaration","scope":2153,"src":"461:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2142,"name":"address","nodeType":"ElementaryTypeName","src":"461:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2146,"mutability":"mutable","name":"currency","nameLocation":"486:8:16","nodeType":"VariableDeclaration","scope":2153,"src":"477:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2145,"nodeType":"UserDefinedTypeName","pathNode":{"id":2144,"name":"Currency","nameLocations":["477:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"477:8:16"},"referencedDeclaration":6525,"src":"477:8:16","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"460:35:16"},"returnParameters":{"id":2150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2149,"mutability":"mutable","name":"hashSlot","nameLocation":"527:8:16","nodeType":"VariableDeclaration","scope":2153,"src":"519:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2148,"name":"bytes32","nodeType":"ElementaryTypeName","src":"519:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"518:18:16"},"scope":2204,"src":"439:352:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2171,"nodeType":"Block","src":"887:148:16","statements":[{"assignments":[2164],"declarations":[{"constant":false,"id":2164,"mutability":"mutable","name":"hashSlot","nameLocation":"905:8:16","nodeType":"VariableDeclaration","scope":2171,"src":"897:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2163,"name":"bytes32","nodeType":"ElementaryTypeName","src":"897:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2169,"initialValue":{"arguments":[{"id":2166,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"929:6:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2167,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2156,"src":"937:8:16","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"id":2165,"name":"_computeSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"916:12:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bytes32_$","typeString":"function (address,Currency) pure returns (bytes32)"}},"id":2168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:30:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"897:49:16"},{"AST":{"nativeSrc":"981:48:16","nodeType":"YulBlock","src":"981:48:16","statements":[{"nativeSrc":"995:24:16","nodeType":"YulAssignment","src":"995:24:16","value":{"arguments":[{"name":"hashSlot","nativeSrc":"1010:8:16","nodeType":"YulIdentifier","src":"1010:8:16"}],"functionName":{"name":"tload","nativeSrc":"1004:5:16","nodeType":"YulIdentifier","src":"1004:5:16"},"nativeSrc":"1004:15:16","nodeType":"YulFunctionCall","src":"1004:15:16"},"variableNames":[{"name":"delta","nativeSrc":"995:5:16","nodeType":"YulIdentifier","src":"995:5:16"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2161,"isOffset":false,"isSlot":false,"src":"995:5:16","valueSize":1},{"declaration":2164,"isOffset":false,"isSlot":false,"src":"1010:8:16","valueSize":1}],"flags":["memory-safe"],"id":2170,"nodeType":"InlineAssembly","src":"956:73:16"}]},"id":2172,"implemented":true,"kind":"function","modifiers":[],"name":"getDelta","nameLocation":"806:8:16","nodeType":"FunctionDefinition","parameters":{"id":2159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2156,"mutability":"mutable","name":"currency","nameLocation":"824:8:16","nodeType":"VariableDeclaration","scope":2172,"src":"815:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2155,"nodeType":"UserDefinedTypeName","pathNode":{"id":2154,"name":"Currency","nameLocations":["815:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"815:8:16"},"referencedDeclaration":6525,"src":"815:8:16","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":2158,"mutability":"mutable","name":"target","nameLocation":"842:6:16","nodeType":"VariableDeclaration","scope":2172,"src":"834:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2157,"name":"address","nodeType":"ElementaryTypeName","src":"834:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"814:35:16"},"returnParameters":{"id":2162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"delta","nameLocation":"880:5:16","nodeType":"VariableDeclaration","scope":2172,"src":"873:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2160,"name":"int256","nodeType":"ElementaryTypeName","src":"873:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"872:14:16"},"scope":2204,"src":"797:238:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2202,"nodeType":"Block","src":"1338:265:16","statements":[{"assignments":[2188],"declarations":[{"constant":false,"id":2188,"mutability":"mutable","name":"hashSlot","nameLocation":"1356:8:16","nodeType":"VariableDeclaration","scope":2202,"src":"1348:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2187,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1348:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2193,"initialValue":{"arguments":[{"id":2190,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"1380:6:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2191,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"1388:8:16","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"id":2189,"name":"_computeSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"1367:12:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bytes32_$","typeString":"function (address,Currency) pure returns (bytes32)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1367:30:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1348:49:16"},{"AST":{"nativeSrc":"1433:51:16","nodeType":"YulBlock","src":"1433:51:16","statements":[{"nativeSrc":"1447:27:16","nodeType":"YulAssignment","src":"1447:27:16","value":{"arguments":[{"name":"hashSlot","nativeSrc":"1465:8:16","nodeType":"YulIdentifier","src":"1465:8:16"}],"functionName":{"name":"tload","nativeSrc":"1459:5:16","nodeType":"YulIdentifier","src":"1459:5:16"},"nativeSrc":"1459:15:16","nodeType":"YulFunctionCall","src":"1459:15:16"},"variableNames":[{"name":"previous","nativeSrc":"1447:8:16","nodeType":"YulIdentifier","src":"1447:8:16"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2188,"isOffset":false,"isSlot":false,"src":"1465:8:16","valueSize":1},{"declaration":2183,"isOffset":false,"isSlot":false,"src":"1447:8:16","valueSize":1}],"flags":["memory-safe"],"id":2194,"nodeType":"InlineAssembly","src":"1408:76:16"},{"expression":{"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2195,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"1493:4:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2196,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"1500:8:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2197,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2180,"src":"1511:5:16","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"1500:16:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1493:23:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2200,"nodeType":"ExpressionStatement","src":"1493:23:16"},{"AST":{"nativeSrc":"1551:46:16","nodeType":"YulBlock","src":"1551:46:16","statements":[{"expression":{"arguments":[{"name":"hashSlot","nativeSrc":"1572:8:16","nodeType":"YulIdentifier","src":"1572:8:16"},{"name":"next","nativeSrc":"1582:4:16","nodeType":"YulIdentifier","src":"1582:4:16"}],"functionName":{"name":"tstore","nativeSrc":"1565:6:16","nodeType":"YulIdentifier","src":"1565:6:16"},"nativeSrc":"1565:22:16","nodeType":"YulFunctionCall","src":"1565:22:16"},"nativeSrc":"1565:22:16","nodeType":"YulExpressionStatement","src":"1565:22:16"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2188,"isOffset":false,"isSlot":false,"src":"1572:8:16","valueSize":1},{"declaration":2185,"isOffset":false,"isSlot":false,"src":"1582:4:16","valueSize":1}],"flags":["memory-safe"],"id":2201,"nodeType":"InlineAssembly","src":"1526:71:16"}]},"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"1041:155:16","text":"@notice applies a new currency delta for a given account and currency\n @return previous The prior value\n @return next The modified result"},"id":2203,"implemented":true,"kind":"function","modifiers":[],"name":"applyDelta","nameLocation":"1210:10:16","nodeType":"FunctionDefinition","parameters":{"id":2181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2176,"mutability":"mutable","name":"currency","nameLocation":"1230:8:16","nodeType":"VariableDeclaration","scope":2203,"src":"1221:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2175,"nodeType":"UserDefinedTypeName","pathNode":{"id":2174,"name":"Currency","nameLocations":["1221:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"1221:8:16"},"referencedDeclaration":6525,"src":"1221:8:16","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":2178,"mutability":"mutable","name":"target","nameLocation":"1248:6:16","nodeType":"VariableDeclaration","scope":2203,"src":"1240:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2177,"name":"address","nodeType":"ElementaryTypeName","src":"1240:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2180,"mutability":"mutable","name":"delta","nameLocation":"1263:5:16","nodeType":"VariableDeclaration","scope":2203,"src":"1256:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":2179,"name":"int128","nodeType":"ElementaryTypeName","src":"1256:6:16","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1220:49:16"},"returnParameters":{"id":2186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2183,"mutability":"mutable","name":"previous","nameLocation":"1311:8:16","nodeType":"VariableDeclaration","scope":2203,"src":"1304:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2182,"name":"int256","nodeType":"ElementaryTypeName","src":"1304:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2185,"mutability":"mutable","name":"next","nameLocation":"1328:4:16","nodeType":"VariableDeclaration","scope":2203,"src":"1321:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2184,"name":"int256","nodeType":"ElementaryTypeName","src":"1321:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1303:30:16"},"scope":2204,"src":"1201:402:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2205,"src":"304:1301:16","usedErrors":[],"usedEvents":[]}],"src":"37:1569:16"},"id":16},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyReserves.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CurrencyReserves.sol","exportedSymbols":{"Currency":[6525],"CurrencyReserves":[2252],"CustomRevert":[2358]},"id":2253,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":2206,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"37:24:17"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","file":"../types/Currency.sol","id":2208,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2253,"sourceUnit":6820,"src":"63:47:17","symbolAliases":[{"foreign":{"id":2207,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"71:8:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./CustomRevert.sol","id":2210,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2253,"sourceUnit":2359,"src":"111:48:17","symbolAliases":[{"foreign":{"id":2209,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"119:12:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CurrencyReserves","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":2252,"linearizedBaseContracts":[2252],"name":"CurrencyReserves","nameLocation":"169:16:17","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2213,"libraryName":{"id":2211,"name":"CustomRevert","nameLocations":["198:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"198:12:17"},"nodeType":"UsingForDirective","src":"192:30:17","typeName":{"id":2212,"name":"bytes4","nodeType":"ElementaryTypeName","src":"215:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"constant":true,"documentation":{"id":2214,"nodeType":"StructuredDocumentation","src":"228:49:17","text":"bytes32(uint256(keccak256(\"ReservesOf\")) - 1)"},"id":2217,"mutability":"constant","name":"RESERVES_OF_SLOT","nameLocation":"299:16:17","nodeType":"VariableDeclaration","scope":2252,"src":"282:102:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"282:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307831653037343561376462313632333938316630623261356434323332333634633030373837323636656237356164353436663139306536636562653962643935","id":2216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"318:66:17","typeDescriptions":{"typeIdentifier":"t_rational_13582234132832961652756477188584847927179359657859594952372729441197434191253_by_1","typeString":"int_const 1358...(69 digits omitted)...1253"},"value":"0x1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd95"},"visibility":"internal"},{"constant":true,"documentation":{"id":2218,"nodeType":"StructuredDocumentation","src":"390:47:17","text":"bytes32(uint256(keccak256(\"Currency\")) - 1)"},"id":2221,"mutability":"constant","name":"CURRENCY_SLOT","nameLocation":"459:13:17","nodeType":"VariableDeclaration","scope":2252,"src":"442:99:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2219,"name":"bytes32","nodeType":"ElementaryTypeName","src":"442:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307832376530393863353035643434656333353734303034626361303532616162663736626433353030346331383230393964386335373566623233383539336239","id":2220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"475:66:17","typeDescriptions":{"typeIdentifier":"t_rational_18037029214425852597980496522548842536420057720408124260691716999909707453369_by_1","typeString":"int_const 1803...(69 digits omitted)...3369"},"value":"0x27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b9"},"visibility":"internal"},{"body":{"id":2228,"nodeType":"Block","src":"619:97:17","statements":[{"AST":{"nativeSrc":"654:56:17","nodeType":"YulBlock","src":"654:56:17","statements":[{"nativeSrc":"668:32:17","nodeType":"YulAssignment","src":"668:32:17","value":{"arguments":[{"name":"CURRENCY_SLOT","nativeSrc":"686:13:17","nodeType":"YulIdentifier","src":"686:13:17"}],"functionName":{"name":"tload","nativeSrc":"680:5:17","nodeType":"YulIdentifier","src":"680:5:17"},"nativeSrc":"680:20:17","nodeType":"YulFunctionCall","src":"680:20:17"},"variableNames":[{"name":"currency","nativeSrc":"668:8:17","nodeType":"YulIdentifier","src":"668:8:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2221,"isOffset":false,"isSlot":false,"src":"686:13:17","valueSize":1},{"declaration":2225,"isOffset":false,"isSlot":false,"src":"668:8:17","valueSize":1}],"flags":["memory-safe"],"id":2227,"nodeType":"InlineAssembly","src":"629:81:17"}]},"id":2229,"implemented":true,"kind":"function","modifiers":[],"name":"getSyncedCurrency","nameLocation":"557:17:17","nodeType":"FunctionDefinition","parameters":{"id":2222,"nodeType":"ParameterList","parameters":[],"src":"574:2:17"},"returnParameters":{"id":2226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2225,"mutability":"mutable","name":"currency","nameLocation":"609:8:17","nodeType":"VariableDeclaration","scope":2229,"src":"600:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2224,"nodeType":"UserDefinedTypeName","pathNode":{"id":2223,"name":"Currency","nameLocations":["600:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"600:8:17"},"referencedDeclaration":6525,"src":"600:8:17","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"599:19:17"},"scope":2252,"src":"548:168:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2233,"nodeType":"Block","src":"756:89:17","statements":[{"AST":{"nativeSrc":"791:48:17","nodeType":"YulBlock","src":"791:48:17","statements":[{"expression":{"arguments":[{"name":"CURRENCY_SLOT","nativeSrc":"812:13:17","nodeType":"YulIdentifier","src":"812:13:17"},{"kind":"number","nativeSrc":"827:1:17","nodeType":"YulLiteral","src":"827:1:17","type":"","value":"0"}],"functionName":{"name":"tstore","nativeSrc":"805:6:17","nodeType":"YulIdentifier","src":"805:6:17"},"nativeSrc":"805:24:17","nodeType":"YulFunctionCall","src":"805:24:17"},"nativeSrc":"805:24:17","nodeType":"YulExpressionStatement","src":"805:24:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2221,"isOffset":false,"isSlot":false,"src":"812:13:17","valueSize":1}],"flags":["memory-safe"],"id":2232,"nodeType":"InlineAssembly","src":"766:73:17"}]},"id":2234,"implemented":true,"kind":"function","modifiers":[],"name":"resetCurrency","nameLocation":"731:13:17","nodeType":"FunctionDefinition","parameters":{"id":2230,"nodeType":"ParameterList","parameters":[],"src":"744:2:17"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[],"src":"756:0:17"},"scope":2252,"src":"722:123:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2243,"nodeType":"Block","src":"927:189:17","statements":[{"AST":{"nativeSrc":"962:148:17","nodeType":"YulBlock","src":"962:148:17","statements":[{"expression":{"arguments":[{"name":"CURRENCY_SLOT","nativeSrc":"983:13:17","nodeType":"YulIdentifier","src":"983:13:17"},{"arguments":[{"name":"currency","nativeSrc":"1002:8:17","nodeType":"YulIdentifier","src":"1002:8:17"},{"kind":"number","nativeSrc":"1012:42:17","nodeType":"YulLiteral","src":"1012:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"998:3:17","nodeType":"YulIdentifier","src":"998:3:17"},"nativeSrc":"998:57:17","nodeType":"YulFunctionCall","src":"998:57:17"}],"functionName":{"name":"tstore","nativeSrc":"976:6:17","nodeType":"YulIdentifier","src":"976:6:17"},"nativeSrc":"976:80:17","nodeType":"YulFunctionCall","src":"976:80:17"},"nativeSrc":"976:80:17","nodeType":"YulExpressionStatement","src":"976:80:17"},{"expression":{"arguments":[{"name":"RESERVES_OF_SLOT","nativeSrc":"1076:16:17","nodeType":"YulIdentifier","src":"1076:16:17"},{"name":"value","nativeSrc":"1094:5:17","nodeType":"YulIdentifier","src":"1094:5:17"}],"functionName":{"name":"tstore","nativeSrc":"1069:6:17","nodeType":"YulIdentifier","src":"1069:6:17"},"nativeSrc":"1069:31:17","nodeType":"YulFunctionCall","src":"1069:31:17"},"nativeSrc":"1069:31:17","nodeType":"YulExpressionStatement","src":"1069:31:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2221,"isOffset":false,"isSlot":false,"src":"983:13:17","valueSize":1},{"declaration":2217,"isOffset":false,"isSlot":false,"src":"1076:16:17","valueSize":1},{"declaration":2237,"isOffset":false,"isSlot":false,"src":"1002:8:17","valueSize":1},{"declaration":2239,"isOffset":false,"isSlot":false,"src":"1094:5:17","valueSize":1}],"flags":["memory-safe"],"id":2242,"nodeType":"InlineAssembly","src":"937:173:17"}]},"id":2244,"implemented":true,"kind":"function","modifiers":[],"name":"syncCurrencyAndReserves","nameLocation":"860:23:17","nodeType":"FunctionDefinition","parameters":{"id":2240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2237,"mutability":"mutable","name":"currency","nameLocation":"893:8:17","nodeType":"VariableDeclaration","scope":2244,"src":"884:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":2236,"nodeType":"UserDefinedTypeName","pathNode":{"id":2235,"name":"Currency","nameLocations":["884:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"884:8:17"},"referencedDeclaration":6525,"src":"884:8:17","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":2239,"mutability":"mutable","name":"value","nameLocation":"911:5:17","nodeType":"VariableDeclaration","scope":2244,"src":"903:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2238,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"883:34:17"},"returnParameters":{"id":2241,"nodeType":"ParameterList","parameters":[],"src":"927:0:17"},"scope":2252,"src":"851:265:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2250,"nodeType":"Block","src":"1189:97:17","statements":[{"AST":{"nativeSrc":"1224:56:17","nodeType":"YulBlock","src":"1224:56:17","statements":[{"nativeSrc":"1238:32:17","nodeType":"YulAssignment","src":"1238:32:17","value":{"arguments":[{"name":"RESERVES_OF_SLOT","nativeSrc":"1253:16:17","nodeType":"YulIdentifier","src":"1253:16:17"}],"functionName":{"name":"tload","nativeSrc":"1247:5:17","nodeType":"YulIdentifier","src":"1247:5:17"},"nativeSrc":"1247:23:17","nodeType":"YulFunctionCall","src":"1247:23:17"},"variableNames":[{"name":"value","nativeSrc":"1238:5:17","nodeType":"YulIdentifier","src":"1238:5:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2217,"isOffset":false,"isSlot":false,"src":"1253:16:17","valueSize":1},{"declaration":2247,"isOffset":false,"isSlot":false,"src":"1238:5:17","valueSize":1}],"flags":["memory-safe"],"id":2249,"nodeType":"InlineAssembly","src":"1199:81:17"}]},"id":2251,"implemented":true,"kind":"function","modifiers":[],"name":"getSyncedReserves","nameLocation":"1131:17:17","nodeType":"FunctionDefinition","parameters":{"id":2245,"nodeType":"ParameterList","parameters":[],"src":"1148:2:17"},"returnParameters":{"id":2248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2247,"mutability":"mutable","name":"value","nameLocation":"1182:5:17","nodeType":"VariableDeclaration","scope":2251,"src":"1174:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2246,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:15:17"},"scope":2252,"src":"1122:164:17","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2253,"src":"161:1127:17","usedErrors":[],"usedEvents":[]}],"src":"37:1252:17"},"id":17},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","exportedSymbols":{"CustomRevert":[2358]},"id":2359,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2254,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:18"},{"abstract":false,"baseContracts":[],"canonicalName":"CustomRevert","contractDependencies":[],"contractKind":"library","documentation":{"id":2255,"nodeType":"StructuredDocumentation","src":"57:444:18","text":"@title Library for reverting with custom errors efficiently\n @notice Contains functions for reverting with custom errors with different argument types efficiently\n @dev To use this library, declare `using CustomRevert for bytes4;` and replace `revert CustomError()` with\n `CustomError.selector.revertWith()`\n @dev The functions may tamper with the free memory pointer but it is fine since the call context is exited immediately"},"fullyImplemented":true,"id":2358,"linearizedBaseContracts":[2358],"name":"CustomRevert","nameLocation":"509:12:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2256,"nodeType":"StructuredDocumentation","src":"528:55:18","text":"@dev ERC-7751 error for wrapping bubbled up reverts"},"errorSelector":"90bfb865","id":2266,"name":"WrappedError","nameLocation":"594:12:18","nodeType":"ErrorDefinition","parameters":{"id":2265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2258,"mutability":"mutable","name":"target","nameLocation":"615:6:18","nodeType":"VariableDeclaration","scope":2266,"src":"607:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2257,"name":"address","nodeType":"ElementaryTypeName","src":"607:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2260,"mutability":"mutable","name":"selector","nameLocation":"630:8:18","nodeType":"VariableDeclaration","scope":2266,"src":"623:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2259,"name":"bytes4","nodeType":"ElementaryTypeName","src":"623:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2262,"mutability":"mutable","name":"reason","nameLocation":"646:6:18","nodeType":"VariableDeclaration","scope":2266,"src":"640:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2261,"name":"bytes","nodeType":"ElementaryTypeName","src":"640:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2264,"mutability":"mutable","name":"details","nameLocation":"660:7:18","nodeType":"VariableDeclaration","scope":2266,"src":"654:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2263,"name":"bytes","nodeType":"ElementaryTypeName","src":"654:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"606:62:18"},"src":"588:81:18"},{"body":{"id":2273,"nodeType":"Block","src":"804:112:18","statements":[{"AST":{"nativeSrc":"839:71:18","nodeType":"YulBlock","src":"839:71:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"860:1:18","nodeType":"YulLiteral","src":"860:1:18","type":"","value":"0"},{"name":"selector","nativeSrc":"863:8:18","nodeType":"YulIdentifier","src":"863:8:18"}],"functionName":{"name":"mstore","nativeSrc":"853:6:18","nodeType":"YulIdentifier","src":"853:6:18"},"nativeSrc":"853:19:18","nodeType":"YulFunctionCall","src":"853:19:18"},"nativeSrc":"853:19:18","nodeType":"YulExpressionStatement","src":"853:19:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"892:1:18","nodeType":"YulLiteral","src":"892:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"895:4:18","nodeType":"YulLiteral","src":"895:4:18","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"885:6:18","nodeType":"YulIdentifier","src":"885:6:18"},"nativeSrc":"885:15:18","nodeType":"YulFunctionCall","src":"885:15:18"},"nativeSrc":"885:15:18","nodeType":"YulExpressionStatement","src":"885:15:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2269,"isOffset":false,"isSlot":false,"src":"863:8:18","valueSize":1}],"flags":["memory-safe"],"id":2272,"nodeType":"InlineAssembly","src":"814:96:18"}]},"documentation":{"id":2267,"nodeType":"StructuredDocumentation","src":"675:73:18","text":"@dev Reverts with the selector of a custom error in the scratch space"},"id":2274,"implemented":true,"kind":"function","modifiers":[],"name":"revertWith","nameLocation":"762:10:18","nodeType":"FunctionDefinition","parameters":{"id":2270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2269,"mutability":"mutable","name":"selector","nameLocation":"780:8:18","nodeType":"VariableDeclaration","scope":2274,"src":"773:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2268,"name":"bytes4","nodeType":"ElementaryTypeName","src":"773:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"772:17:18"},"returnParameters":{"id":2271,"nodeType":"ParameterList","parameters":[],"src":"804:0:18"},"scope":2358,"src":"753:163:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2283,"nodeType":"Block","src":"1074:192:18","statements":[{"AST":{"nativeSrc":"1109:151:18","nodeType":"YulBlock","src":"1109:151:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1130:1:18","nodeType":"YulLiteral","src":"1130:1:18","type":"","value":"0"},{"name":"selector","nativeSrc":"1133:8:18","nodeType":"YulIdentifier","src":"1133:8:18"}],"functionName":{"name":"mstore","nativeSrc":"1123:6:18","nodeType":"YulIdentifier","src":"1123:6:18"},"nativeSrc":"1123:19:18","nodeType":"YulFunctionCall","src":"1123:19:18"},"nativeSrc":"1123:19:18","nodeType":"YulExpressionStatement","src":"1123:19:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1162:4:18","nodeType":"YulLiteral","src":"1162:4:18","type":"","value":"0x04"},{"arguments":[{"name":"addr","nativeSrc":"1172:4:18","nodeType":"YulIdentifier","src":"1172:4:18"},{"kind":"number","nativeSrc":"1178:42:18","nodeType":"YulLiteral","src":"1178:42:18","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1168:3:18","nodeType":"YulIdentifier","src":"1168:3:18"},"nativeSrc":"1168:53:18","nodeType":"YulFunctionCall","src":"1168:53:18"}],"functionName":{"name":"mstore","nativeSrc":"1155:6:18","nodeType":"YulIdentifier","src":"1155:6:18"},"nativeSrc":"1155:67:18","nodeType":"YulFunctionCall","src":"1155:67:18"},"nativeSrc":"1155:67:18","nodeType":"YulExpressionStatement","src":"1155:67:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1242:1:18","nodeType":"YulLiteral","src":"1242:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1245:4:18","nodeType":"YulLiteral","src":"1245:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1235:6:18","nodeType":"YulIdentifier","src":"1235:6:18"},"nativeSrc":"1235:15:18","nodeType":"YulFunctionCall","src":"1235:15:18"},"nativeSrc":"1235:15:18","nodeType":"YulExpressionStatement","src":"1235:15:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2279,"isOffset":false,"isSlot":false,"src":"1172:4:18","valueSize":1},{"declaration":2277,"isOffset":false,"isSlot":false,"src":"1133:8:18","valueSize":1}],"flags":["memory-safe"],"id":2282,"nodeType":"InlineAssembly","src":"1084:176:18"}]},"documentation":{"id":2275,"nodeType":"StructuredDocumentation","src":"922:82:18","text":"@dev Reverts with a custom error with an address argument in the scratch space"},"id":2284,"implemented":true,"kind":"function","modifiers":[],"name":"revertWith","nameLocation":"1018:10:18","nodeType":"FunctionDefinition","parameters":{"id":2280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2277,"mutability":"mutable","name":"selector","nameLocation":"1036:8:18","nodeType":"VariableDeclaration","scope":2284,"src":"1029:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2276,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1029:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2279,"mutability":"mutable","name":"addr","nameLocation":"1054:4:18","nodeType":"VariableDeclaration","scope":2284,"src":"1046:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2278,"name":"address","nodeType":"ElementaryTypeName","src":"1046:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1028:31:18"},"returnParameters":{"id":2281,"nodeType":"ParameterList","parameters":[],"src":"1074:0:18"},"scope":2358,"src":"1009:257:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2293,"nodeType":"Block","src":"1421:159:18","statements":[{"AST":{"nativeSrc":"1456:118:18","nodeType":"YulBlock","src":"1456:118:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1477:1:18","nodeType":"YulLiteral","src":"1477:1:18","type":"","value":"0"},{"name":"selector","nativeSrc":"1480:8:18","nodeType":"YulIdentifier","src":"1480:8:18"}],"functionName":{"name":"mstore","nativeSrc":"1470:6:18","nodeType":"YulIdentifier","src":"1470:6:18"},"nativeSrc":"1470:19:18","nodeType":"YulFunctionCall","src":"1470:19:18"},"nativeSrc":"1470:19:18","nodeType":"YulExpressionStatement","src":"1470:19:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1509:4:18","nodeType":"YulLiteral","src":"1509:4:18","type":"","value":"0x04"},{"arguments":[{"kind":"number","nativeSrc":"1526:1:18","nodeType":"YulLiteral","src":"1526:1:18","type":"","value":"2"},{"name":"value","nativeSrc":"1529:5:18","nodeType":"YulIdentifier","src":"1529:5:18"}],"functionName":{"name":"signextend","nativeSrc":"1515:10:18","nodeType":"YulIdentifier","src":"1515:10:18"},"nativeSrc":"1515:20:18","nodeType":"YulFunctionCall","src":"1515:20:18"}],"functionName":{"name":"mstore","nativeSrc":"1502:6:18","nodeType":"YulIdentifier","src":"1502:6:18"},"nativeSrc":"1502:34:18","nodeType":"YulFunctionCall","src":"1502:34:18"},"nativeSrc":"1502:34:18","nodeType":"YulExpressionStatement","src":"1502:34:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1556:1:18","nodeType":"YulLiteral","src":"1556:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1559:4:18","nodeType":"YulLiteral","src":"1559:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1549:6:18","nodeType":"YulIdentifier","src":"1549:6:18"},"nativeSrc":"1549:15:18","nodeType":"YulFunctionCall","src":"1549:15:18"},"nativeSrc":"1549:15:18","nodeType":"YulExpressionStatement","src":"1549:15:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2287,"isOffset":false,"isSlot":false,"src":"1480:8:18","valueSize":1},{"declaration":2289,"isOffset":false,"isSlot":false,"src":"1529:5:18","valueSize":1}],"flags":["memory-safe"],"id":2292,"nodeType":"InlineAssembly","src":"1431:143:18"}]},"documentation":{"id":2285,"nodeType":"StructuredDocumentation","src":"1272:80:18","text":"@dev Reverts with a custom error with an int24 argument in the scratch space"},"id":2294,"implemented":true,"kind":"function","modifiers":[],"name":"revertWith","nameLocation":"1366:10:18","nodeType":"FunctionDefinition","parameters":{"id":2290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"mutability":"mutable","name":"selector","nameLocation":"1384:8:18","nodeType":"VariableDeclaration","scope":2294,"src":"1377:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2286,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1377:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2289,"mutability":"mutable","name":"value","nameLocation":"1400:5:18","nodeType":"VariableDeclaration","scope":2294,"src":"1394:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2288,"name":"int24","nodeType":"ElementaryTypeName","src":"1394:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1376:30:18"},"returnParameters":{"id":2291,"nodeType":"ParameterList","parameters":[],"src":"1421:0:18"},"scope":2358,"src":"1357:223:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2303,"nodeType":"Block","src":"1738:193:18","statements":[{"AST":{"nativeSrc":"1773:152:18","nodeType":"YulBlock","src":"1773:152:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1794:1:18","nodeType":"YulLiteral","src":"1794:1:18","type":"","value":"0"},{"name":"selector","nativeSrc":"1797:8:18","nodeType":"YulIdentifier","src":"1797:8:18"}],"functionName":{"name":"mstore","nativeSrc":"1787:6:18","nodeType":"YulIdentifier","src":"1787:6:18"},"nativeSrc":"1787:19:18","nodeType":"YulFunctionCall","src":"1787:19:18"},"nativeSrc":"1787:19:18","nodeType":"YulExpressionStatement","src":"1787:19:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1826:4:18","nodeType":"YulLiteral","src":"1826:4:18","type":"","value":"0x04"},{"arguments":[{"name":"value","nativeSrc":"1836:5:18","nodeType":"YulIdentifier","src":"1836:5:18"},{"kind":"number","nativeSrc":"1843:42:18","nodeType":"YulLiteral","src":"1843:42:18","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1832:3:18","nodeType":"YulIdentifier","src":"1832:3:18"},"nativeSrc":"1832:54:18","nodeType":"YulFunctionCall","src":"1832:54:18"}],"functionName":{"name":"mstore","nativeSrc":"1819:6:18","nodeType":"YulIdentifier","src":"1819:6:18"},"nativeSrc":"1819:68:18","nodeType":"YulFunctionCall","src":"1819:68:18"},"nativeSrc":"1819:68:18","nodeType":"YulExpressionStatement","src":"1819:68:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1907:1:18","nodeType":"YulLiteral","src":"1907:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1910:4:18","nodeType":"YulLiteral","src":"1910:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1900:6:18","nodeType":"YulIdentifier","src":"1900:6:18"},"nativeSrc":"1900:15:18","nodeType":"YulFunctionCall","src":"1900:15:18"},"nativeSrc":"1900:15:18","nodeType":"YulExpressionStatement","src":"1900:15:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2297,"isOffset":false,"isSlot":false,"src":"1797:8:18","valueSize":1},{"declaration":2299,"isOffset":false,"isSlot":false,"src":"1836:5:18","valueSize":1}],"flags":["memory-safe"],"id":2302,"nodeType":"InlineAssembly","src":"1748:177:18"}]},"documentation":{"id":2295,"nodeType":"StructuredDocumentation","src":"1586:81:18","text":"@dev Reverts with a custom error with a uint160 argument in the scratch space"},"id":2304,"implemented":true,"kind":"function","modifiers":[],"name":"revertWith","nameLocation":"1681:10:18","nodeType":"FunctionDefinition","parameters":{"id":2300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2297,"mutability":"mutable","name":"selector","nameLocation":"1699:8:18","nodeType":"VariableDeclaration","scope":2304,"src":"1692:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2296,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1692:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2299,"mutability":"mutable","name":"value","nameLocation":"1717:5:18","nodeType":"VariableDeclaration","scope":2304,"src":"1709:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2298,"name":"uint160","nodeType":"ElementaryTypeName","src":"1709:7:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1691:32:18"},"returnParameters":{"id":2301,"nodeType":"ParameterList","parameters":[],"src":"1738:0:18"},"scope":2358,"src":"1672:259:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2315,"nodeType":"Block","src":"2082:267:18","statements":[{"AST":{"nativeSrc":"2117:226:18","nodeType":"YulBlock","src":"2117:226:18","statements":[{"nativeSrc":"2131:22:18","nodeType":"YulVariableDeclaration","src":"2131:22:18","value":{"arguments":[{"kind":"number","nativeSrc":"2148:4:18","nodeType":"YulLiteral","src":"2148:4:18","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2142:5:18","nodeType":"YulIdentifier","src":"2142:5:18"},"nativeSrc":"2142:11:18","nodeType":"YulFunctionCall","src":"2142:11:18"},"variables":[{"name":"fmp","nativeSrc":"2135:3:18","nodeType":"YulTypedName","src":"2135:3:18","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"2173:3:18","nodeType":"YulIdentifier","src":"2173:3:18"},{"name":"selector","nativeSrc":"2178:8:18","nodeType":"YulIdentifier","src":"2178:8:18"}],"functionName":{"name":"mstore","nativeSrc":"2166:6:18","nodeType":"YulIdentifier","src":"2166:6:18"},"nativeSrc":"2166:21:18","nodeType":"YulFunctionCall","src":"2166:21:18"},"nativeSrc":"2166:21:18","nodeType":"YulExpressionStatement","src":"2166:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2211:3:18","nodeType":"YulIdentifier","src":"2211:3:18"},{"kind":"number","nativeSrc":"2216:4:18","nodeType":"YulLiteral","src":"2216:4:18","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"2207:3:18","nodeType":"YulIdentifier","src":"2207:3:18"},"nativeSrc":"2207:14:18","nodeType":"YulFunctionCall","src":"2207:14:18"},{"arguments":[{"kind":"number","nativeSrc":"2234:1:18","nodeType":"YulLiteral","src":"2234:1:18","type":"","value":"2"},{"name":"value1","nativeSrc":"2237:6:18","nodeType":"YulIdentifier","src":"2237:6:18"}],"functionName":{"name":"signextend","nativeSrc":"2223:10:18","nodeType":"YulIdentifier","src":"2223:10:18"},"nativeSrc":"2223:21:18","nodeType":"YulFunctionCall","src":"2223:21:18"}],"functionName":{"name":"mstore","nativeSrc":"2200:6:18","nodeType":"YulIdentifier","src":"2200:6:18"},"nativeSrc":"2200:45:18","nodeType":"YulFunctionCall","src":"2200:45:18"},"nativeSrc":"2200:45:18","nodeType":"YulExpressionStatement","src":"2200:45:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2269:3:18","nodeType":"YulIdentifier","src":"2269:3:18"},{"kind":"number","nativeSrc":"2274:4:18","nodeType":"YulLiteral","src":"2274:4:18","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"2265:3:18","nodeType":"YulIdentifier","src":"2265:3:18"},"nativeSrc":"2265:14:18","nodeType":"YulFunctionCall","src":"2265:14:18"},{"arguments":[{"kind":"number","nativeSrc":"2292:1:18","nodeType":"YulLiteral","src":"2292:1:18","type":"","value":"2"},{"name":"value2","nativeSrc":"2295:6:18","nodeType":"YulIdentifier","src":"2295:6:18"}],"functionName":{"name":"signextend","nativeSrc":"2281:10:18","nodeType":"YulIdentifier","src":"2281:10:18"},"nativeSrc":"2281:21:18","nodeType":"YulFunctionCall","src":"2281:21:18"}],"functionName":{"name":"mstore","nativeSrc":"2258:6:18","nodeType":"YulIdentifier","src":"2258:6:18"},"nativeSrc":"2258:45:18","nodeType":"YulFunctionCall","src":"2258:45:18"},"nativeSrc":"2258:45:18","nodeType":"YulExpressionStatement","src":"2258:45:18"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"2323:3:18","nodeType":"YulIdentifier","src":"2323:3:18"},{"kind":"number","nativeSrc":"2328:4:18","nodeType":"YulLiteral","src":"2328:4:18","type":"","value":"0x44"}],"functionName":{"name":"revert","nativeSrc":"2316:6:18","nodeType":"YulIdentifier","src":"2316:6:18"},"nativeSrc":"2316:17:18","nodeType":"YulFunctionCall","src":"2316:17:18"},"nativeSrc":"2316:17:18","nodeType":"YulExpressionStatement","src":"2316:17:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2307,"isOffset":false,"isSlot":false,"src":"2178:8:18","valueSize":1},{"declaration":2309,"isOffset":false,"isSlot":false,"src":"2237:6:18","valueSize":1},{"declaration":2311,"isOffset":false,"isSlot":false,"src":"2295:6:18","valueSize":1}],"flags":["memory-safe"],"id":2314,"nodeType":"InlineAssembly","src":"2092:251:18"}]},"documentation":{"id":2305,"nodeType":"StructuredDocumentation","src":"1937:61:18","text":"@dev Reverts with a custom error with two int24 arguments"},"id":2316,"implemented":true,"kind":"function","modifiers":[],"name":"revertWith","nameLocation":"2012:10:18","nodeType":"FunctionDefinition","parameters":{"id":2312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2307,"mutability":"mutable","name":"selector","nameLocation":"2030:8:18","nodeType":"VariableDeclaration","scope":2316,"src":"2023:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2306,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2023:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"value1","nameLocation":"2046:6:18","nodeType":"VariableDeclaration","scope":2316,"src":"2040:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2308,"name":"int24","nodeType":"ElementaryTypeName","src":"2040:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":2311,"mutability":"mutable","name":"value2","nameLocation":"2060:6:18","nodeType":"VariableDeclaration","scope":2316,"src":"2054:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2310,"name":"int24","nodeType":"ElementaryTypeName","src":"2054:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2022:45:18"},"returnParameters":{"id":2313,"nodeType":"ParameterList","parameters":[],"src":"2082:0:18"},"scope":2358,"src":"2003:346:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2327,"nodeType":"Block","src":"2506:335:18","statements":[{"AST":{"nativeSrc":"2541:294:18","nodeType":"YulBlock","src":"2541:294:18","statements":[{"nativeSrc":"2555:22:18","nodeType":"YulVariableDeclaration","src":"2555:22:18","value":{"arguments":[{"kind":"number","nativeSrc":"2572:4:18","nodeType":"YulLiteral","src":"2572:4:18","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2566:5:18","nodeType":"YulIdentifier","src":"2566:5:18"},"nativeSrc":"2566:11:18","nodeType":"YulFunctionCall","src":"2566:11:18"},"variables":[{"name":"fmp","nativeSrc":"2559:3:18","nodeType":"YulTypedName","src":"2559:3:18","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"2597:3:18","nodeType":"YulIdentifier","src":"2597:3:18"},{"name":"selector","nativeSrc":"2602:8:18","nodeType":"YulIdentifier","src":"2602:8:18"}],"functionName":{"name":"mstore","nativeSrc":"2590:6:18","nodeType":"YulIdentifier","src":"2590:6:18"},"nativeSrc":"2590:21:18","nodeType":"YulFunctionCall","src":"2590:21:18"},"nativeSrc":"2590:21:18","nodeType":"YulExpressionStatement","src":"2590:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2635:3:18","nodeType":"YulIdentifier","src":"2635:3:18"},{"kind":"number","nativeSrc":"2640:4:18","nodeType":"YulLiteral","src":"2640:4:18","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"2631:3:18","nodeType":"YulIdentifier","src":"2631:3:18"},"nativeSrc":"2631:14:18","nodeType":"YulFunctionCall","src":"2631:14:18"},{"arguments":[{"name":"value1","nativeSrc":"2651:6:18","nodeType":"YulIdentifier","src":"2651:6:18"},{"kind":"number","nativeSrc":"2659:42:18","nodeType":"YulLiteral","src":"2659:42:18","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"2647:3:18","nodeType":"YulIdentifier","src":"2647:3:18"},"nativeSrc":"2647:55:18","nodeType":"YulFunctionCall","src":"2647:55:18"}],"functionName":{"name":"mstore","nativeSrc":"2624:6:18","nodeType":"YulIdentifier","src":"2624:6:18"},"nativeSrc":"2624:79:18","nodeType":"YulFunctionCall","src":"2624:79:18"},"nativeSrc":"2624:79:18","nodeType":"YulExpressionStatement","src":"2624:79:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2727:3:18","nodeType":"YulIdentifier","src":"2727:3:18"},{"kind":"number","nativeSrc":"2732:4:18","nodeType":"YulLiteral","src":"2732:4:18","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"2723:3:18","nodeType":"YulIdentifier","src":"2723:3:18"},"nativeSrc":"2723:14:18","nodeType":"YulFunctionCall","src":"2723:14:18"},{"arguments":[{"name":"value2","nativeSrc":"2743:6:18","nodeType":"YulIdentifier","src":"2743:6:18"},{"kind":"number","nativeSrc":"2751:42:18","nodeType":"YulLiteral","src":"2751:42:18","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"2739:3:18","nodeType":"YulIdentifier","src":"2739:3:18"},"nativeSrc":"2739:55:18","nodeType":"YulFunctionCall","src":"2739:55:18"}],"functionName":{"name":"mstore","nativeSrc":"2716:6:18","nodeType":"YulIdentifier","src":"2716:6:18"},"nativeSrc":"2716:79:18","nodeType":"YulFunctionCall","src":"2716:79:18"},"nativeSrc":"2716:79:18","nodeType":"YulExpressionStatement","src":"2716:79:18"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"2815:3:18","nodeType":"YulIdentifier","src":"2815:3:18"},{"kind":"number","nativeSrc":"2820:4:18","nodeType":"YulLiteral","src":"2820:4:18","type":"","value":"0x44"}],"functionName":{"name":"revert","nativeSrc":"2808:6:18","nodeType":"YulIdentifier","src":"2808:6:18"},"nativeSrc":"2808:17:18","nodeType":"YulFunctionCall","src":"2808:17:18"},"nativeSrc":"2808:17:18","nodeType":"YulExpressionStatement","src":"2808:17:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2319,"isOffset":false,"isSlot":false,"src":"2602:8:18","valueSize":1},{"declaration":2321,"isOffset":false,"isSlot":false,"src":"2651:6:18","valueSize":1},{"declaration":2323,"isOffset":false,"isSlot":false,"src":"2743:6:18","valueSize":1}],"flags":["memory-safe"],"id":2326,"nodeType":"InlineAssembly","src":"2516:319:18"}]},"documentation":{"id":2317,"nodeType":"StructuredDocumentation","src":"2355:63:18","text":"@dev Reverts with a custom error with two uint160 arguments"},"id":2328,"implemented":true,"kind":"function","modifiers":[],"name":"revertWith","nameLocation":"2432:10:18","nodeType":"FunctionDefinition","parameters":{"id":2324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2319,"mutability":"mutable","name":"selector","nameLocation":"2450:8:18","nodeType":"VariableDeclaration","scope":2328,"src":"2443:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2318,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2443:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2321,"mutability":"mutable","name":"value1","nameLocation":"2468:6:18","nodeType":"VariableDeclaration","scope":2328,"src":"2460:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2320,"name":"uint160","nodeType":"ElementaryTypeName","src":"2460:7:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":2323,"mutability":"mutable","name":"value2","nameLocation":"2484:6:18","nodeType":"VariableDeclaration","scope":2328,"src":"2476:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2322,"name":"uint160","nodeType":"ElementaryTypeName","src":"2476:7:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2442:49:18"},"returnParameters":{"id":2325,"nodeType":"ParameterList","parameters":[],"src":"2506:0:18"},"scope":2358,"src":"2423:418:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2339,"nodeType":"Block","src":"2998:335:18","statements":[{"AST":{"nativeSrc":"3033:294:18","nodeType":"YulBlock","src":"3033:294:18","statements":[{"nativeSrc":"3047:22:18","nodeType":"YulVariableDeclaration","src":"3047:22:18","value":{"arguments":[{"kind":"number","nativeSrc":"3064:4:18","nodeType":"YulLiteral","src":"3064:4:18","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"3058:5:18","nodeType":"YulIdentifier","src":"3058:5:18"},"nativeSrc":"3058:11:18","nodeType":"YulFunctionCall","src":"3058:11:18"},"variables":[{"name":"fmp","nativeSrc":"3051:3:18","nodeType":"YulTypedName","src":"3051:3:18","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"3089:3:18","nodeType":"YulIdentifier","src":"3089:3:18"},{"name":"selector","nativeSrc":"3094:8:18","nodeType":"YulIdentifier","src":"3094:8:18"}],"functionName":{"name":"mstore","nativeSrc":"3082:6:18","nodeType":"YulIdentifier","src":"3082:6:18"},"nativeSrc":"3082:21:18","nodeType":"YulFunctionCall","src":"3082:21:18"},"nativeSrc":"3082:21:18","nodeType":"YulExpressionStatement","src":"3082:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"3127:3:18","nodeType":"YulIdentifier","src":"3127:3:18"},{"kind":"number","nativeSrc":"3132:4:18","nodeType":"YulLiteral","src":"3132:4:18","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"3123:3:18","nodeType":"YulIdentifier","src":"3123:3:18"},"nativeSrc":"3123:14:18","nodeType":"YulFunctionCall","src":"3123:14:18"},{"arguments":[{"name":"value1","nativeSrc":"3143:6:18","nodeType":"YulIdentifier","src":"3143:6:18"},{"kind":"number","nativeSrc":"3151:42:18","nodeType":"YulLiteral","src":"3151:42:18","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3139:3:18","nodeType":"YulIdentifier","src":"3139:3:18"},"nativeSrc":"3139:55:18","nodeType":"YulFunctionCall","src":"3139:55:18"}],"functionName":{"name":"mstore","nativeSrc":"3116:6:18","nodeType":"YulIdentifier","src":"3116:6:18"},"nativeSrc":"3116:79:18","nodeType":"YulFunctionCall","src":"3116:79:18"},"nativeSrc":"3116:79:18","nodeType":"YulExpressionStatement","src":"3116:79:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"3219:3:18","nodeType":"YulIdentifier","src":"3219:3:18"},{"kind":"number","nativeSrc":"3224:4:18","nodeType":"YulLiteral","src":"3224:4:18","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"3215:3:18","nodeType":"YulIdentifier","src":"3215:3:18"},"nativeSrc":"3215:14:18","nodeType":"YulFunctionCall","src":"3215:14:18"},{"arguments":[{"name":"value2","nativeSrc":"3235:6:18","nodeType":"YulIdentifier","src":"3235:6:18"},{"kind":"number","nativeSrc":"3243:42:18","nodeType":"YulLiteral","src":"3243:42:18","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3231:3:18","nodeType":"YulIdentifier","src":"3231:3:18"},"nativeSrc":"3231:55:18","nodeType":"YulFunctionCall","src":"3231:55:18"}],"functionName":{"name":"mstore","nativeSrc":"3208:6:18","nodeType":"YulIdentifier","src":"3208:6:18"},"nativeSrc":"3208:79:18","nodeType":"YulFunctionCall","src":"3208:79:18"},"nativeSrc":"3208:79:18","nodeType":"YulExpressionStatement","src":"3208:79:18"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"3307:3:18","nodeType":"YulIdentifier","src":"3307:3:18"},{"kind":"number","nativeSrc":"3312:4:18","nodeType":"YulLiteral","src":"3312:4:18","type":"","value":"0x44"}],"functionName":{"name":"revert","nativeSrc":"3300:6:18","nodeType":"YulIdentifier","src":"3300:6:18"},"nativeSrc":"3300:17:18","nodeType":"YulFunctionCall","src":"3300:17:18"},"nativeSrc":"3300:17:18","nodeType":"YulExpressionStatement","src":"3300:17:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2331,"isOffset":false,"isSlot":false,"src":"3094:8:18","valueSize":1},{"declaration":2333,"isOffset":false,"isSlot":false,"src":"3143:6:18","valueSize":1},{"declaration":2335,"isOffset":false,"isSlot":false,"src":"3235:6:18","valueSize":1}],"flags":["memory-safe"],"id":2338,"nodeType":"InlineAssembly","src":"3008:319:18"}]},"documentation":{"id":2329,"nodeType":"StructuredDocumentation","src":"2847:63:18","text":"@dev Reverts with a custom error with two address arguments"},"id":2340,"implemented":true,"kind":"function","modifiers":[],"name":"revertWith","nameLocation":"2924:10:18","nodeType":"FunctionDefinition","parameters":{"id":2336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2331,"mutability":"mutable","name":"selector","nameLocation":"2942:8:18","nodeType":"VariableDeclaration","scope":2340,"src":"2935:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2330,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2935:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2333,"mutability":"mutable","name":"value1","nameLocation":"2960:6:18","nodeType":"VariableDeclaration","scope":2340,"src":"2952:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2332,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2335,"mutability":"mutable","name":"value2","nameLocation":"2976:6:18","nodeType":"VariableDeclaration","scope":2340,"src":"2968:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2334,"name":"address","nodeType":"ElementaryTypeName","src":"2968:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2934:49:18"},"returnParameters":{"id":2337,"nodeType":"ParameterList","parameters":[],"src":"2998:0:18"},"scope":2358,"src":"2915:418:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2356,"nodeType":"Block","src":"3670:1501:18","statements":[{"assignments":[2351],"declarations":[{"constant":false,"id":2351,"mutability":"mutable","name":"wrappedErrorSelector","nameLocation":"3687:20:18","nodeType":"VariableDeclaration","scope":2356,"src":"3680:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2350,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3680:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2354,"initialValue":{"expression":{"id":2352,"name":"WrappedError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"3710:12:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes4_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (address,bytes4,bytes memory,bytes memory) pure returns (error)"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3723:8:18","memberName":"selector","nodeType":"MemberAccess","src":"3710:21:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3680:51:18"},{"AST":{"nativeSrc":"3766:1399:18","nodeType":"YulBlock","src":"3766:1399:18","statements":[{"nativeSrc":"3856:66:18","nodeType":"YulVariableDeclaration","src":"3856:66:18","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"3891:14:18","nodeType":"YulIdentifier","src":"3891:14:18"},"nativeSrc":"3891:16:18","nodeType":"YulFunctionCall","src":"3891:16:18"},{"kind":"number","nativeSrc":"3909:2:18","nodeType":"YulLiteral","src":"3909:2:18","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3887:3:18","nodeType":"YulIdentifier","src":"3887:3:18"},"nativeSrc":"3887:25:18","nodeType":"YulFunctionCall","src":"3887:25:18"},{"kind":"number","nativeSrc":"3914:2:18","nodeType":"YulLiteral","src":"3914:2:18","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"3883:3:18","nodeType":"YulIdentifier","src":"3883:3:18"},"nativeSrc":"3883:34:18","nodeType":"YulFunctionCall","src":"3883:34:18"},{"kind":"number","nativeSrc":"3919:2:18","nodeType":"YulLiteral","src":"3919:2:18","type":"","value":"32"}],"functionName":{"name":"mul","nativeSrc":"3879:3:18","nodeType":"YulIdentifier","src":"3879:3:18"},"nativeSrc":"3879:43:18","nodeType":"YulFunctionCall","src":"3879:43:18"},"variables":[{"name":"encodedDataSize","nativeSrc":"3860:15:18","nodeType":"YulTypedName","src":"3860:15:18","type":""}]},{"nativeSrc":"3936:22:18","nodeType":"YulVariableDeclaration","src":"3936:22:18","value":{"arguments":[{"kind":"number","nativeSrc":"3953:4:18","nodeType":"YulLiteral","src":"3953:4:18","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"3947:5:18","nodeType":"YulIdentifier","src":"3947:5:18"},"nativeSrc":"3947:11:18","nodeType":"YulFunctionCall","src":"3947:11:18"},"variables":[{"name":"fmp","nativeSrc":"3940:3:18","nodeType":"YulTypedName","src":"3940:3:18","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"4101:3:18","nodeType":"YulIdentifier","src":"4101:3:18"},{"name":"wrappedErrorSelector","nativeSrc":"4106:20:18","nodeType":"YulIdentifier","src":"4106:20:18"}],"functionName":{"name":"mstore","nativeSrc":"4094:6:18","nodeType":"YulIdentifier","src":"4094:6:18"},"nativeSrc":"4094:33:18","nodeType":"YulFunctionCall","src":"4094:33:18"},"nativeSrc":"4094:33:18","nodeType":"YulExpressionStatement","src":"4094:33:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4151:3:18","nodeType":"YulIdentifier","src":"4151:3:18"},{"kind":"number","nativeSrc":"4156:4:18","nodeType":"YulLiteral","src":"4156:4:18","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"4147:3:18","nodeType":"YulIdentifier","src":"4147:3:18"},"nativeSrc":"4147:14:18","nodeType":"YulFunctionCall","src":"4147:14:18"},{"arguments":[{"name":"revertingContract","nativeSrc":"4167:17:18","nodeType":"YulIdentifier","src":"4167:17:18"},{"kind":"number","nativeSrc":"4186:42:18","nodeType":"YulLiteral","src":"4186:42:18","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4163:3:18","nodeType":"YulIdentifier","src":"4163:3:18"},"nativeSrc":"4163:66:18","nodeType":"YulFunctionCall","src":"4163:66:18"}],"functionName":{"name":"mstore","nativeSrc":"4140:6:18","nodeType":"YulIdentifier","src":"4140:6:18"},"nativeSrc":"4140:90:18","nodeType":"YulFunctionCall","src":"4140:90:18"},"nativeSrc":"4140:90:18","nodeType":"YulExpressionStatement","src":"4140:90:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4271:3:18","nodeType":"YulIdentifier","src":"4271:3:18"},{"kind":"number","nativeSrc":"4276:4:18","nodeType":"YulLiteral","src":"4276:4:18","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"4267:3:18","nodeType":"YulIdentifier","src":"4267:3:18"},"nativeSrc":"4267:14:18","nodeType":"YulFunctionCall","src":"4267:14:18"},{"arguments":[{"name":"revertingFunctionSelector","nativeSrc":"4303:25:18","nodeType":"YulIdentifier","src":"4303:25:18"},{"kind":"number","nativeSrc":"4330:66:18","nodeType":"YulLiteral","src":"4330:66:18","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"4299:3:18","nodeType":"YulIdentifier","src":"4299:3:18"},"nativeSrc":"4299:98:18","nodeType":"YulFunctionCall","src":"4299:98:18"}],"functionName":{"name":"mstore","nativeSrc":"4243:6:18","nodeType":"YulIdentifier","src":"4243:6:18"},"nativeSrc":"4243:168:18","nodeType":"YulFunctionCall","src":"4243:168:18"},"nativeSrc":"4243:168:18","nodeType":"YulExpressionStatement","src":"4243:168:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4471:3:18","nodeType":"YulIdentifier","src":"4471:3:18"},{"kind":"number","nativeSrc":"4476:4:18","nodeType":"YulLiteral","src":"4476:4:18","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"4467:3:18","nodeType":"YulIdentifier","src":"4467:3:18"},"nativeSrc":"4467:14:18","nodeType":"YulFunctionCall","src":"4467:14:18"},{"kind":"number","nativeSrc":"4483:4:18","nodeType":"YulLiteral","src":"4483:4:18","type":"","value":"0x80"}],"functionName":{"name":"mstore","nativeSrc":"4460:6:18","nodeType":"YulIdentifier","src":"4460:6:18"},"nativeSrc":"4460:28:18","nodeType":"YulFunctionCall","src":"4460:28:18"},"nativeSrc":"4460:28:18","nodeType":"YulExpressionStatement","src":"4460:28:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4553:3:18","nodeType":"YulIdentifier","src":"4553:3:18"},{"kind":"number","nativeSrc":"4558:4:18","nodeType":"YulLiteral","src":"4558:4:18","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"4549:3:18","nodeType":"YulIdentifier","src":"4549:3:18"},"nativeSrc":"4549:14:18","nodeType":"YulFunctionCall","src":"4549:14:18"},{"arguments":[{"kind":"number","nativeSrc":"4569:4:18","nodeType":"YulLiteral","src":"4569:4:18","type":"","value":"0xa0"},{"name":"encodedDataSize","nativeSrc":"4575:15:18","nodeType":"YulIdentifier","src":"4575:15:18"}],"functionName":{"name":"add","nativeSrc":"4565:3:18","nodeType":"YulIdentifier","src":"4565:3:18"},"nativeSrc":"4565:26:18","nodeType":"YulFunctionCall","src":"4565:26:18"}],"functionName":{"name":"mstore","nativeSrc":"4542:6:18","nodeType":"YulIdentifier","src":"4542:6:18"},"nativeSrc":"4542:50:18","nodeType":"YulFunctionCall","src":"4542:50:18"},"nativeSrc":"4542:50:18","nodeType":"YulExpressionStatement","src":"4542:50:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4650:3:18","nodeType":"YulIdentifier","src":"4650:3:18"},{"kind":"number","nativeSrc":"4655:4:18","nodeType":"YulLiteral","src":"4655:4:18","type":"","value":"0x84"}],"functionName":{"name":"add","nativeSrc":"4646:3:18","nodeType":"YulIdentifier","src":"4646:3:18"},"nativeSrc":"4646:14:18","nodeType":"YulFunctionCall","src":"4646:14:18"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4662:14:18","nodeType":"YulIdentifier","src":"4662:14:18"},"nativeSrc":"4662:16:18","nodeType":"YulFunctionCall","src":"4662:16:18"}],"functionName":{"name":"mstore","nativeSrc":"4639:6:18","nodeType":"YulIdentifier","src":"4639:6:18"},"nativeSrc":"4639:40:18","nodeType":"YulFunctionCall","src":"4639:40:18"},"nativeSrc":"4639:40:18","nodeType":"YulExpressionStatement","src":"4639:40:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4740:3:18","nodeType":"YulIdentifier","src":"4740:3:18"},{"kind":"number","nativeSrc":"4745:4:18","nodeType":"YulLiteral","src":"4745:4:18","type":"","value":"0xa4"}],"functionName":{"name":"add","nativeSrc":"4736:3:18","nodeType":"YulIdentifier","src":"4736:3:18"},"nativeSrc":"4736:14:18","nodeType":"YulFunctionCall","src":"4736:14:18"},{"kind":"number","nativeSrc":"4752:1:18","nodeType":"YulLiteral","src":"4752:1:18","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4755:14:18","nodeType":"YulIdentifier","src":"4755:14:18"},"nativeSrc":"4755:16:18","nodeType":"YulFunctionCall","src":"4755:16:18"}],"functionName":{"name":"returndatacopy","nativeSrc":"4721:14:18","nodeType":"YulIdentifier","src":"4721:14:18"},"nativeSrc":"4721:51:18","nodeType":"YulFunctionCall","src":"4721:51:18"},"nativeSrc":"4721:51:18","nodeType":"YulExpressionStatement","src":"4721:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4835:3:18","nodeType":"YulIdentifier","src":"4835:3:18"},{"arguments":[{"kind":"number","nativeSrc":"4844:4:18","nodeType":"YulLiteral","src":"4844:4:18","type":"","value":"0xa4"},{"name":"encodedDataSize","nativeSrc":"4850:15:18","nodeType":"YulIdentifier","src":"4850:15:18"}],"functionName":{"name":"add","nativeSrc":"4840:3:18","nodeType":"YulIdentifier","src":"4840:3:18"},"nativeSrc":"4840:26:18","nodeType":"YulFunctionCall","src":"4840:26:18"}],"functionName":{"name":"add","nativeSrc":"4831:3:18","nodeType":"YulIdentifier","src":"4831:3:18"},"nativeSrc":"4831:36:18","nodeType":"YulFunctionCall","src":"4831:36:18"},{"kind":"number","nativeSrc":"4869:4:18","nodeType":"YulLiteral","src":"4869:4:18","type":"","value":"0x04"}],"functionName":{"name":"mstore","nativeSrc":"4824:6:18","nodeType":"YulIdentifier","src":"4824:6:18"},"nativeSrc":"4824:50:18","nodeType":"YulFunctionCall","src":"4824:50:18"},"nativeSrc":"4824:50:18","nodeType":"YulExpressionStatement","src":"4824:50:18"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"4949:3:18","nodeType":"YulIdentifier","src":"4949:3:18"},{"arguments":[{"kind":"number","nativeSrc":"4958:4:18","nodeType":"YulLiteral","src":"4958:4:18","type":"","value":"0xc4"},{"name":"encodedDataSize","nativeSrc":"4964:15:18","nodeType":"YulIdentifier","src":"4964:15:18"}],"functionName":{"name":"add","nativeSrc":"4954:3:18","nodeType":"YulIdentifier","src":"4954:3:18"},"nativeSrc":"4954:26:18","nodeType":"YulFunctionCall","src":"4954:26:18"}],"functionName":{"name":"add","nativeSrc":"4945:3:18","nodeType":"YulIdentifier","src":"4945:3:18"},"nativeSrc":"4945:36:18","nodeType":"YulFunctionCall","src":"4945:36:18"},{"arguments":[{"name":"additionalContext","nativeSrc":"5003:17:18","nodeType":"YulIdentifier","src":"5003:17:18"},{"kind":"number","nativeSrc":"5022:66:18","nodeType":"YulLiteral","src":"5022:66:18","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"4999:3:18","nodeType":"YulIdentifier","src":"4999:3:18"},"nativeSrc":"4999:90:18","nodeType":"YulFunctionCall","src":"4999:90:18"}],"functionName":{"name":"mstore","nativeSrc":"4921:6:18","nodeType":"YulIdentifier","src":"4921:6:18"},"nativeSrc":"4921:182:18","nodeType":"YulFunctionCall","src":"4921:182:18"},"nativeSrc":"4921:182:18","nodeType":"YulExpressionStatement","src":"4921:182:18"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"5123:3:18","nodeType":"YulIdentifier","src":"5123:3:18"},{"arguments":[{"kind":"number","nativeSrc":"5132:4:18","nodeType":"YulLiteral","src":"5132:4:18","type":"","value":"0xe4"},{"name":"encodedDataSize","nativeSrc":"5138:15:18","nodeType":"YulIdentifier","src":"5138:15:18"}],"functionName":{"name":"add","nativeSrc":"5128:3:18","nodeType":"YulIdentifier","src":"5128:3:18"},"nativeSrc":"5128:26:18","nodeType":"YulFunctionCall","src":"5128:26:18"}],"functionName":{"name":"revert","nativeSrc":"5116:6:18","nodeType":"YulIdentifier","src":"5116:6:18"},"nativeSrc":"5116:39:18","nodeType":"YulFunctionCall","src":"5116:39:18"},"nativeSrc":"5116:39:18","nodeType":"YulExpressionStatement","src":"5116:39:18"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2347,"isOffset":false,"isSlot":false,"src":"5003:17:18","valueSize":1},{"declaration":2343,"isOffset":false,"isSlot":false,"src":"4167:17:18","valueSize":1},{"declaration":2345,"isOffset":false,"isSlot":false,"src":"4303:25:18","valueSize":1},{"declaration":2351,"isOffset":false,"isSlot":false,"src":"4106:20:18","valueSize":1}],"flags":["memory-safe"],"id":2355,"nodeType":"InlineAssembly","src":"3741:1424:18"}]},"documentation":{"id":2341,"nodeType":"StructuredDocumentation","src":"3339:164:18","text":"@notice bubble up the revert message returned by a call and revert with a wrapped ERC-7751 error\n @dev this method can be vulnerable to revert data bombs"},"id":2357,"implemented":true,"kind":"function","modifiers":[],"name":"bubbleUpAndRevertWith","nameLocation":"3517:21:18","nodeType":"FunctionDefinition","parameters":{"id":2348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2343,"mutability":"mutable","name":"revertingContract","nameLocation":"3556:17:18","nodeType":"VariableDeclaration","scope":2357,"src":"3548:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2342,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2345,"mutability":"mutable","name":"revertingFunctionSelector","nameLocation":"3590:25:18","nodeType":"VariableDeclaration","scope":2357,"src":"3583:32:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2344,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3583:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2347,"mutability":"mutable","name":"additionalContext","nameLocation":"3632:17:18","nodeType":"VariableDeclaration","scope":2357,"src":"3625:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2346,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3625:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3538:117:18"},"returnParameters":{"id":2349,"nodeType":"ParameterList","parameters":[],"src":"3670:0:18"},"scope":2358,"src":"3508:1663:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2359,"src":"501:4672:18","usedErrors":[2266],"usedEvents":[]}],"src":"32:5142:18"},"id":18},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint128.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint128.sol","exportedSymbols":{"FixedPoint128":[7607]},"id":7608,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7602,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:19"},{"abstract":false,"baseContracts":[],"canonicalName":"FixedPoint128","contractDependencies":[],"contractKind":"library","documentation":{"id":7603,"nodeType":"StructuredDocumentation","src":"57:140:19","text":"@title FixedPoint128\n @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)"},"fullyImplemented":true,"id":7607,"linearizedBaseContracts":[7607],"name":"FixedPoint128","nameLocation":"205:13:19","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":7606,"mutability":"constant","name":"Q128","nameLocation":"251:4:19","nodeType":"VariableDeclaration","scope":7607,"src":"225:68:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7604,"name":"uint256","nodeType":"ElementaryTypeName","src":"225:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":7605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"258:35:19","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"visibility":"internal"}],"scope":7608,"src":"197:99:19","usedErrors":[],"usedEvents":[]}],"src":"32:265:19"},"id":19},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint96.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint96.sol","exportedSymbols":{"FixedPoint96":[9031]},"id":9032,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9023,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:20"},{"abstract":false,"baseContracts":[],"canonicalName":"FixedPoint96","contractDependencies":[],"contractKind":"library","documentation":{"id":9024,"nodeType":"StructuredDocumentation","src":"57:174:20","text":"@title FixedPoint96\n @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\n @dev Used in SqrtPriceMath.sol"},"fullyImplemented":true,"id":9031,"linearizedBaseContracts":[9031],"name":"FixedPoint96","nameLocation":"239:12:20","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":9027,"mutability":"constant","name":"RESOLUTION","nameLocation":"282:10:20","nodeType":"VariableDeclaration","scope":9031,"src":"258:39:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9025,"name":"uint8","nodeType":"ElementaryTypeName","src":"258:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3936","id":9026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"295:2:20","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"visibility":"internal"},{"constant":true,"id":9030,"mutability":"constant","name":"Q96","nameLocation":"329:3:20","nodeType":"VariableDeclaration","scope":9031,"src":"303:59:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9028,"name":"uint256","nodeType":"ElementaryTypeName","src":"303:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307831303030303030303030303030303030303030303030303030","id":9029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"335:27:20","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"},"value":"0x1000000000000000000000000"},"visibility":"internal"}],"scope":9032,"src":"231:134:20","usedErrors":[],"usedEvents":[]}],"src":"32:334:20"},"id":20},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FullMath.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FullMath.sol","exportedSymbols":{"FullMath":[8913]},"id":8914,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8747,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:21"},{"abstract":false,"baseContracts":[],"canonicalName":"FullMath","contractDependencies":[],"contractKind":"library","documentation":{"id":8748,"nodeType":"StructuredDocumentation","src":"57:297:21","text":"@title Contains 512-bit math functions\n @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\n @dev Handles \"phantom overflow\" i.e., allows multiplication and division where an intermediate value overflows 256 bits"},"fullyImplemented":true,"id":8913,"linearizedBaseContracts":[8913],"name":"FullMath","nameLocation":"362:8:21","nodeType":"ContractDefinition","nodes":[{"body":{"id":8873,"nodeType":"Block","src":"839:4043:21","statements":[{"id":8872,"nodeType":"UncheckedBlock","src":"849:4027:21","statements":[{"assignments":[8761],"declarations":[{"constant":false,"id":8761,"mutability":"mutable","name":"prod0","nameLocation":"1204:5:21","nodeType":"VariableDeclaration","scope":8872,"src":"1196:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8760,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8765,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8762,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"1212:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8763,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8753,"src":"1216:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1212:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1196:21:21"},{"assignments":[8767],"declarations":[{"constant":false,"id":8767,"mutability":"mutable","name":"prod1","nameLocation":"1284:5:21","nodeType":"VariableDeclaration","scope":8872,"src":"1276:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8766,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8768,"nodeType":"VariableDeclarationStatement","src":"1276:13:21"},{"AST":{"nativeSrc":"1372:122:21","nodeType":"YulBlock","src":"1372:122:21","statements":[{"nativeSrc":"1390:30:21","nodeType":"YulVariableDeclaration","src":"1390:30:21","value":{"arguments":[{"name":"a","nativeSrc":"1407:1:21","nodeType":"YulIdentifier","src":"1407:1:21"},{"name":"b","nativeSrc":"1410:1:21","nodeType":"YulIdentifier","src":"1410:1:21"},{"arguments":[{"kind":"number","nativeSrc":"1417:1:21","nodeType":"YulLiteral","src":"1417:1:21","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1413:3:21","nodeType":"YulIdentifier","src":"1413:3:21"},"nativeSrc":"1413:6:21","nodeType":"YulFunctionCall","src":"1413:6:21"}],"functionName":{"name":"mulmod","nativeSrc":"1400:6:21","nodeType":"YulIdentifier","src":"1400:6:21"},"nativeSrc":"1400:20:21","nodeType":"YulFunctionCall","src":"1400:20:21"},"variables":[{"name":"mm","nativeSrc":"1394:2:21","nodeType":"YulTypedName","src":"1394:2:21","type":""}]},{"nativeSrc":"1437:43:21","nodeType":"YulAssignment","src":"1437:43:21","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1454:2:21","nodeType":"YulIdentifier","src":"1454:2:21"},{"name":"prod0","nativeSrc":"1458:5:21","nodeType":"YulIdentifier","src":"1458:5:21"}],"functionName":{"name":"sub","nativeSrc":"1450:3:21","nodeType":"YulIdentifier","src":"1450:3:21"},"nativeSrc":"1450:14:21","nodeType":"YulFunctionCall","src":"1450:14:21"},{"arguments":[{"name":"mm","nativeSrc":"1469:2:21","nodeType":"YulIdentifier","src":"1469:2:21"},{"name":"prod0","nativeSrc":"1473:5:21","nodeType":"YulIdentifier","src":"1473:5:21"}],"functionName":{"name":"lt","nativeSrc":"1466:2:21","nodeType":"YulIdentifier","src":"1466:2:21"},"nativeSrc":"1466:13:21","nodeType":"YulFunctionCall","src":"1466:13:21"}],"functionName":{"name":"sub","nativeSrc":"1446:3:21","nodeType":"YulIdentifier","src":"1446:3:21"},"nativeSrc":"1446:34:21","nodeType":"YulFunctionCall","src":"1446:34:21"},"variableNames":[{"name":"prod1","nativeSrc":"1437:5:21","nodeType":"YulIdentifier","src":"1437:5:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8751,"isOffset":false,"isSlot":false,"src":"1407:1:21","valueSize":1},{"declaration":8753,"isOffset":false,"isSlot":false,"src":"1410:1:21","valueSize":1},{"declaration":8761,"isOffset":false,"isSlot":false,"src":"1458:5:21","valueSize":1},{"declaration":8761,"isOffset":false,"isSlot":false,"src":"1473:5:21","valueSize":1},{"declaration":8767,"isOffset":false,"isSlot":false,"src":"1437:5:21","valueSize":1}],"flags":["memory-safe"],"id":8769,"nodeType":"InlineAssembly","src":"1347:147:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8771,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"1619:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8772,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8767,"src":"1633:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1619:19:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8770,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1611:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1611:28:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8775,"nodeType":"ExpressionStatement","src":"1611:28:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8776,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8767,"src":"1720:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1729:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1720:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8783,"nodeType":"IfStatement","src":"1716:177:21","trueBody":{"id":8782,"nodeType":"Block","src":"1732:161:21","statements":[{"AST":{"nativeSrc":"1775:73:21","nodeType":"YulBlock","src":"1775:73:21","statements":[{"nativeSrc":"1797:33:21","nodeType":"YulAssignment","src":"1797:33:21","value":{"arguments":[{"name":"prod0","nativeSrc":"1811:5:21","nodeType":"YulIdentifier","src":"1811:5:21"},{"name":"denominator","nativeSrc":"1818:11:21","nodeType":"YulIdentifier","src":"1818:11:21"}],"functionName":{"name":"div","nativeSrc":"1807:3:21","nodeType":"YulIdentifier","src":"1807:3:21"},"nativeSrc":"1807:23:21","nodeType":"YulFunctionCall","src":"1807:23:21"},"variableNames":[{"name":"result","nativeSrc":"1797:6:21","nodeType":"YulIdentifier","src":"1797:6:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8755,"isOffset":false,"isSlot":false,"src":"1818:11:21","valueSize":1},{"declaration":8761,"isOffset":false,"isSlot":false,"src":"1811:5:21","valueSize":1},{"declaration":8758,"isOffset":false,"isSlot":false,"src":"1797:6:21","valueSize":1}],"flags":["memory-safe"],"id":8779,"nodeType":"InlineAssembly","src":"1750:98:21"},{"expression":{"id":8780,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8758,"src":"1872:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8759,"id":8781,"nodeType":"Return","src":"1865:13:21"}]}},{"assignments":[8785],"declarations":[{"constant":false,"id":8785,"mutability":"mutable","name":"remainder","nameLocation":"2201:9:21","nodeType":"VariableDeclaration","scope":8872,"src":"2193:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8784,"name":"uint256","nodeType":"ElementaryTypeName","src":"2193:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8786,"nodeType":"VariableDeclarationStatement","src":"2193:17:21"},{"AST":{"nativeSrc":"2249:70:21","nodeType":"YulBlock","src":"2249:70:21","statements":[{"nativeSrc":"2267:38:21","nodeType":"YulAssignment","src":"2267:38:21","value":{"arguments":[{"name":"a","nativeSrc":"2287:1:21","nodeType":"YulIdentifier","src":"2287:1:21"},{"name":"b","nativeSrc":"2290:1:21","nodeType":"YulIdentifier","src":"2290:1:21"},{"name":"denominator","nativeSrc":"2293:11:21","nodeType":"YulIdentifier","src":"2293:11:21"}],"functionName":{"name":"mulmod","nativeSrc":"2280:6:21","nodeType":"YulIdentifier","src":"2280:6:21"},"nativeSrc":"2280:25:21","nodeType":"YulFunctionCall","src":"2280:25:21"},"variableNames":[{"name":"remainder","nativeSrc":"2267:9:21","nodeType":"YulIdentifier","src":"2267:9:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8751,"isOffset":false,"isSlot":false,"src":"2287:1:21","valueSize":1},{"declaration":8753,"isOffset":false,"isSlot":false,"src":"2290:1:21","valueSize":1},{"declaration":8755,"isOffset":false,"isSlot":false,"src":"2293:11:21","valueSize":1},{"declaration":8785,"isOffset":false,"isSlot":false,"src":"2267:9:21","valueSize":1}],"flags":["memory-safe"],"id":8787,"nodeType":"InlineAssembly","src":"2224:95:21"},{"AST":{"nativeSrc":"2416:120:21","nodeType":"YulBlock","src":"2416:120:21","statements":[{"nativeSrc":"2434:41:21","nodeType":"YulAssignment","src":"2434:41:21","value":{"arguments":[{"name":"prod1","nativeSrc":"2447:5:21","nodeType":"YulIdentifier","src":"2447:5:21"},{"arguments":[{"name":"remainder","nativeSrc":"2457:9:21","nodeType":"YulIdentifier","src":"2457:9:21"},{"name":"prod0","nativeSrc":"2468:5:21","nodeType":"YulIdentifier","src":"2468:5:21"}],"functionName":{"name":"gt","nativeSrc":"2454:2:21","nodeType":"YulIdentifier","src":"2454:2:21"},"nativeSrc":"2454:20:21","nodeType":"YulFunctionCall","src":"2454:20:21"}],"functionName":{"name":"sub","nativeSrc":"2443:3:21","nodeType":"YulIdentifier","src":"2443:3:21"},"nativeSrc":"2443:32:21","nodeType":"YulFunctionCall","src":"2443:32:21"},"variableNames":[{"name":"prod1","nativeSrc":"2434:5:21","nodeType":"YulIdentifier","src":"2434:5:21"}]},{"nativeSrc":"2492:30:21","nodeType":"YulAssignment","src":"2492:30:21","value":{"arguments":[{"name":"prod0","nativeSrc":"2505:5:21","nodeType":"YulIdentifier","src":"2505:5:21"},{"name":"remainder","nativeSrc":"2512:9:21","nodeType":"YulIdentifier","src":"2512:9:21"}],"functionName":{"name":"sub","nativeSrc":"2501:3:21","nodeType":"YulIdentifier","src":"2501:3:21"},"nativeSrc":"2501:21:21","nodeType":"YulFunctionCall","src":"2501:21:21"},"variableNames":[{"name":"prod0","nativeSrc":"2492:5:21","nodeType":"YulIdentifier","src":"2492:5:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8761,"isOffset":false,"isSlot":false,"src":"2468:5:21","valueSize":1},{"declaration":8761,"isOffset":false,"isSlot":false,"src":"2492:5:21","valueSize":1},{"declaration":8761,"isOffset":false,"isSlot":false,"src":"2505:5:21","valueSize":1},{"declaration":8767,"isOffset":false,"isSlot":false,"src":"2434:5:21","valueSize":1},{"declaration":8767,"isOffset":false,"isSlot":false,"src":"2447:5:21","valueSize":1},{"declaration":8785,"isOffset":false,"isSlot":false,"src":"2457:9:21","valueSize":1},{"declaration":8785,"isOffset":false,"isSlot":false,"src":"2512:9:21","valueSize":1}],"flags":["memory-safe"],"id":8788,"nodeType":"InlineAssembly","src":"2391:145:21"},{"assignments":[8790],"declarations":[{"constant":false,"id":8790,"mutability":"mutable","name":"twos","nameLocation":"2709:4:21","nodeType":"VariableDeclaration","scope":8872,"src":"2701:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8789,"name":"uint256","nodeType":"ElementaryTypeName","src":"2701:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8797,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":8791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2717:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8792,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"2721:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2717:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2716:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8795,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"2736:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2716:31:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2701:46:21"},{"AST":{"nativeSrc":"2836:69:21","nodeType":"YulBlock","src":"2836:69:21","statements":[{"nativeSrc":"2854:37:21","nodeType":"YulAssignment","src":"2854:37:21","value":{"arguments":[{"name":"denominator","nativeSrc":"2873:11:21","nodeType":"YulIdentifier","src":"2873:11:21"},{"name":"twos","nativeSrc":"2886:4:21","nodeType":"YulIdentifier","src":"2886:4:21"}],"functionName":{"name":"div","nativeSrc":"2869:3:21","nodeType":"YulIdentifier","src":"2869:3:21"},"nativeSrc":"2869:22:21","nodeType":"YulFunctionCall","src":"2869:22:21"},"variableNames":[{"name":"denominator","nativeSrc":"2854:11:21","nodeType":"YulIdentifier","src":"2854:11:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8755,"isOffset":false,"isSlot":false,"src":"2854:11:21","valueSize":1},{"declaration":8755,"isOffset":false,"isSlot":false,"src":"2873:11:21","valueSize":1},{"declaration":8790,"isOffset":false,"isSlot":false,"src":"2886:4:21","valueSize":1}],"flags":["memory-safe"],"id":8798,"nodeType":"InlineAssembly","src":"2811:94:21"},{"AST":{"nativeSrc":"3002:57:21","nodeType":"YulBlock","src":"3002:57:21","statements":[{"nativeSrc":"3020:25:21","nodeType":"YulAssignment","src":"3020:25:21","value":{"arguments":[{"name":"prod0","nativeSrc":"3033:5:21","nodeType":"YulIdentifier","src":"3033:5:21"},{"name":"twos","nativeSrc":"3040:4:21","nodeType":"YulIdentifier","src":"3040:4:21"}],"functionName":{"name":"div","nativeSrc":"3029:3:21","nodeType":"YulIdentifier","src":"3029:3:21"},"nativeSrc":"3029:16:21","nodeType":"YulFunctionCall","src":"3029:16:21"},"variableNames":[{"name":"prod0","nativeSrc":"3020:5:21","nodeType":"YulIdentifier","src":"3020:5:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8761,"isOffset":false,"isSlot":false,"src":"3020:5:21","valueSize":1},{"declaration":8761,"isOffset":false,"isSlot":false,"src":"3033:5:21","valueSize":1},{"declaration":8790,"isOffset":false,"isSlot":false,"src":"3040:4:21","valueSize":1}],"flags":["memory-safe"],"id":8799,"nodeType":"InlineAssembly","src":"2977:82:21"},{"AST":{"nativeSrc":"3279:71:21","nodeType":"YulBlock","src":"3279:71:21","statements":[{"nativeSrc":"3297:39:21","nodeType":"YulAssignment","src":"3297:39:21","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3317:1:21","nodeType":"YulLiteral","src":"3317:1:21","type":"","value":"0"},{"name":"twos","nativeSrc":"3320:4:21","nodeType":"YulIdentifier","src":"3320:4:21"}],"functionName":{"name":"sub","nativeSrc":"3313:3:21","nodeType":"YulIdentifier","src":"3313:3:21"},"nativeSrc":"3313:12:21","nodeType":"YulFunctionCall","src":"3313:12:21"},{"name":"twos","nativeSrc":"3327:4:21","nodeType":"YulIdentifier","src":"3327:4:21"}],"functionName":{"name":"div","nativeSrc":"3309:3:21","nodeType":"YulIdentifier","src":"3309:3:21"},"nativeSrc":"3309:23:21","nodeType":"YulFunctionCall","src":"3309:23:21"},{"kind":"number","nativeSrc":"3334:1:21","nodeType":"YulLiteral","src":"3334:1:21","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3305:3:21","nodeType":"YulIdentifier","src":"3305:3:21"},"nativeSrc":"3305:31:21","nodeType":"YulFunctionCall","src":"3305:31:21"},"variableNames":[{"name":"twos","nativeSrc":"3297:4:21","nodeType":"YulIdentifier","src":"3297:4:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8790,"isOffset":false,"isSlot":false,"src":"3297:4:21","valueSize":1},{"declaration":8790,"isOffset":false,"isSlot":false,"src":"3320:4:21","valueSize":1},{"declaration":8790,"isOffset":false,"isSlot":false,"src":"3327:4:21","valueSize":1}],"flags":["memory-safe"],"id":8800,"nodeType":"InlineAssembly","src":"3254:96:21"},{"expression":{"id":8805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8801,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8761,"src":"3363:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8802,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8767,"src":"3372:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8803,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8790,"src":"3380:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3372:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3363:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8806,"nodeType":"ExpressionStatement","src":"3363:21:21"},{"assignments":[8808],"declarations":[{"constant":false,"id":8808,"mutability":"mutable","name":"inv","nameLocation":"3750:3:21","nodeType":"VariableDeclaration","scope":8872,"src":"3742:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8807,"name":"uint256","nodeType":"ElementaryTypeName","src":"3742:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8815,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":8809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3757:1:21","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8810,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"3761:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3757:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3756:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":8813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3776:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3756:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3742:35:21"},{"expression":{"id":8822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8816,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4008:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":8817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4015:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8818,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"4019:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8819,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4033:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4019:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4015:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4008:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8823,"nodeType":"ExpressionStatement","src":"4008:28:21"},{"expression":{"id":8830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8824,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4070:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":8825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4077:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8826,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"4081:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8827,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4095:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4081:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4077:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4070:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8831,"nodeType":"ExpressionStatement","src":"4070:28:21"},{"expression":{"id":8838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8832,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4133:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":8833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4140:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8834,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"4144:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8835,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4158:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4144:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4140:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4133:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8839,"nodeType":"ExpressionStatement","src":"4133:28:21"},{"expression":{"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8840,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4196:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":8841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4203:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8842,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"4207:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8843,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4221:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4207:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4203:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4196:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8847,"nodeType":"ExpressionStatement","src":"4196:28:21"},{"expression":{"id":8854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8848,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4259:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":8849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4266:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8850,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"4270:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8851,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4284:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4270:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4266:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4259:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8855,"nodeType":"ExpressionStatement","src":"4259:28:21"},{"expression":{"id":8862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8856,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4323:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":8857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4330:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8858,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"4334:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8859,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4348:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4334:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4330:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4323:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8863,"nodeType":"ExpressionStatement","src":"4323:28:21"},{"expression":{"id":8868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8864,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8758,"src":"4818:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8865,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8761,"src":"4827:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8866,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"4835:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4827:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4818:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8869,"nodeType":"ExpressionStatement","src":"4818:20:21"},{"expression":{"id":8870,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8758,"src":"4859:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8759,"id":8871,"nodeType":"Return","src":"4852:13:21"}]}]},"documentation":{"id":8749,"nodeType":"StructuredDocumentation","src":"377:359:21","text":"@notice Calculates floor(a\u00d7b\u00f7denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @param a The multiplicand\n @param b The multiplier\n @param denominator The divisor\n @return result The 256-bit result\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv"},"id":8874,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"750:6:21","nodeType":"FunctionDefinition","parameters":{"id":8756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8751,"mutability":"mutable","name":"a","nameLocation":"765:1:21","nodeType":"VariableDeclaration","scope":8874,"src":"757:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8750,"name":"uint256","nodeType":"ElementaryTypeName","src":"757:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8753,"mutability":"mutable","name":"b","nameLocation":"776:1:21","nodeType":"VariableDeclaration","scope":8874,"src":"768:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8752,"name":"uint256","nodeType":"ElementaryTypeName","src":"768:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8755,"mutability":"mutable","name":"denominator","nameLocation":"787:11:21","nodeType":"VariableDeclaration","scope":8874,"src":"779:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8754,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"756:43:21"},"returnParameters":{"id":8759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8758,"mutability":"mutable","name":"result","nameLocation":"831:6:21","nodeType":"VariableDeclaration","scope":8874,"src":"823:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8757,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"822:16:21"},"scope":8913,"src":"741:4141:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8911,"nodeType":"Block","src":"5272:188:21","statements":[{"id":8910,"nodeType":"UncheckedBlock","src":"5282:172:21","statements":[{"expression":{"id":8892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8886,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8884,"src":"5306:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8888,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"5322:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8889,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8879,"src":"5325:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8890,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"5328:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8887,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"5315:6:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5315:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5306:34:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8893,"nodeType":"ExpressionStatement","src":"5306:34:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8895,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"5365:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8896,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8879,"src":"5368:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8897,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"5371:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8894,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5358:6:21","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5387:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5358:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8909,"nodeType":"IfStatement","src":"5354:90:21","trueBody":{"id":8908,"nodeType":"Block","src":"5390:54:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5416:8:21","subExpression":{"id":8902,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8884,"src":"5418:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5427:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5416:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8901,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5408:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5408:21:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8907,"nodeType":"ExpressionStatement","src":"5408:21:21"}]}}]}]},"documentation":{"id":8875,"nodeType":"StructuredDocumentation","src":"4888:271:21","text":"@notice Calculates ceil(a\u00d7b\u00f7denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @param a The multiplicand\n @param b The multiplier\n @param denominator The divisor\n @return result The 256-bit result"},"id":8912,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUp","nameLocation":"5173:16:21","nodeType":"FunctionDefinition","parameters":{"id":8882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8877,"mutability":"mutable","name":"a","nameLocation":"5198:1:21","nodeType":"VariableDeclaration","scope":8912,"src":"5190:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8876,"name":"uint256","nodeType":"ElementaryTypeName","src":"5190:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8879,"mutability":"mutable","name":"b","nameLocation":"5209:1:21","nodeType":"VariableDeclaration","scope":8912,"src":"5201:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8878,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8881,"mutability":"mutable","name":"denominator","nameLocation":"5220:11:21","nodeType":"VariableDeclaration","scope":8912,"src":"5212:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8880,"name":"uint256","nodeType":"ElementaryTypeName","src":"5212:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5189:43:21"},"returnParameters":{"id":8885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8884,"mutability":"mutable","name":"result","nameLocation":"5264:6:21","nodeType":"VariableDeclaration","scope":8912,"src":"5256:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8883,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5255:16:21"},"scope":8913,"src":"5164:296:21","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8914,"src":"354:5108:21","usedErrors":[],"usedEvents":[]}],"src":"32:5431:21"},"id":21},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Hooks.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Hooks.sol","exportedSymbols":{"BalanceDelta":[6311],"BalanceDeltaLibrary":[6469],"BeforeSwapDelta":[6473],"BeforeSwapDeltaLibrary":[6517],"CustomRevert":[2358],"Hooks":[3530],"IHooks":[1840],"IPoolManager":[2123],"LPFeeLibrary":[3679],"ModifyLiquidityParams":[6887],"ParseBytes":[7600],"PoolKey":[6871],"SafeCast":[5751],"SwapParams":[6898],"toBalanceDelta":[6337]},"id":3531,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2360,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:22"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"../types/PoolKey.sol","id":2362,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":6872,"src":"57:45:22","symbolAliases":[{"foreign":{"id":2361,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"65:7:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IHooks.sol","file":"../interfaces/IHooks.sol","id":2364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":1841,"src":"103:48:22","symbolAliases":[{"foreign":{"id":2363,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"111:6:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol","file":"./SafeCast.sol","id":2366,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":5752,"src":"152:40:22","symbolAliases":[{"foreign":{"id":2365,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"160:8:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LPFeeLibrary.sol","file":"./LPFeeLibrary.sol","id":2368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":3680,"src":"193:48:22","symbolAliases":[{"foreign":{"id":2367,"name":"LPFeeLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"201:12:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol","file":"../types/BalanceDelta.sol","id":2372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":6470,"src":"242:92:22","symbolAliases":[{"foreign":{"id":2369,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"250:12:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2370,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"264:14:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2371,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"280:19:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BeforeSwapDelta.sol","file":"../types/BeforeSwapDelta.sol","id":2375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":6518,"src":"335:85:22","symbolAliases":[{"foreign":{"id":2373,"name":"BeforeSwapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"343:15:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2374,"name":"BeforeSwapDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6517,"src":"360:22:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IPoolManager.sol","file":"../interfaces/IPoolManager.sol","id":2377,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":2124,"src":"421:60:22","symbolAliases":[{"foreign":{"id":2376,"name":"IPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2123,"src":"429:12:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolOperation.sol","file":"../types/PoolOperation.sol","id":2380,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":6899,"src":"482:77:22","symbolAliases":[{"foreign":{"id":2378,"name":"ModifyLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6887,"src":"490:21:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2379,"name":"SwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"513:10:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ParseBytes.sol","file":"./ParseBytes.sol","id":2382,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":7601,"src":"560:44:22","symbolAliases":[{"foreign":{"id":2381,"name":"ParseBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7600,"src":"568:10:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./CustomRevert.sol","id":2384,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3531,"sourceUnit":2359,"src":"605:48:22","symbolAliases":[{"foreign":{"id":2383,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"613:12:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Hooks","contractDependencies":[],"contractKind":"library","documentation":{"id":2385,"nodeType":"StructuredDocumentation","src":"655:384:22","text":"@notice V4 decides whether to invoke specific hooks by inspecting the least significant bits\n of the address that the hooks contract is deployed to.\n For example, a hooks contract deployed to address: 0x0000000000000000000000000000000000002400\n has the lowest bits '10 0100 0000 0000' which would cause the 'before initialize' and 'after add liquidity' hooks to be used."},"fullyImplemented":true,"id":3530,"linearizedBaseContracts":[3530],"name":"Hooks","nameLocation":"1047:5:22","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2388,"libraryName":{"id":2386,"name":"LPFeeLibrary","nameLocations":["1065:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":3679,"src":"1065:12:22"},"nodeType":"UsingForDirective","src":"1059:30:22","typeName":{"id":2387,"name":"uint24","nodeType":"ElementaryTypeName","src":"1082:6:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}},{"global":false,"id":2392,"libraryName":{"id":2389,"name":"Hooks","nameLocations":["1100:5:22"],"nodeType":"IdentifierPath","referencedDeclaration":3530,"src":"1100:5:22"},"nodeType":"UsingForDirective","src":"1094:23:22","typeName":{"id":2391,"nodeType":"UserDefinedTypeName","pathNode":{"id":2390,"name":"IHooks","nameLocations":["1110:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"1110:6:22"},"referencedDeclaration":1840,"src":"1110:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}},{"global":false,"id":2395,"libraryName":{"id":2393,"name":"SafeCast","nameLocations":["1128:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":5751,"src":"1128:8:22"},"nodeType":"UsingForDirective","src":"1122:26:22","typeName":{"id":2394,"name":"int256","nodeType":"ElementaryTypeName","src":"1141:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"global":false,"id":2399,"libraryName":{"id":2396,"name":"BeforeSwapDeltaLibrary","nameLocations":["1159:22:22"],"nodeType":"IdentifierPath","referencedDeclaration":6517,"src":"1159:22:22"},"nodeType":"UsingForDirective","src":"1153:49:22","typeName":{"id":2398,"nodeType":"UserDefinedTypeName","pathNode":{"id":2397,"name":"BeforeSwapDelta","nameLocations":["1186:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"1186:15:22"},"referencedDeclaration":6473,"src":"1186:15:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}}},{"global":false,"id":2402,"libraryName":{"id":2400,"name":"ParseBytes","nameLocations":["1213:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":7600,"src":"1213:10:22"},"nodeType":"UsingForDirective","src":"1207:27:22","typeName":{"id":2401,"name":"bytes","nodeType":"ElementaryTypeName","src":"1228:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"global":false,"id":2405,"libraryName":{"id":2403,"name":"CustomRevert","nameLocations":["1245:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"1245:12:22"},"nodeType":"UsingForDirective","src":"1239:30:22","typeName":{"id":2404,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1262:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"constant":true,"id":2416,"mutability":"constant","name":"ALL_HOOK_MASK","nameLocation":"1301:13:22","nodeType":"VariableDeclaration","scope":3530,"src":"1275:64:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2406,"name":"uint160","nodeType":"ElementaryTypeName","src":"1275:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_rational_16383_by_1","typeString":"int_const 16383"},"id":2414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"},"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1326:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3134","id":2410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1331:2:22","typeDescriptions":{"typeIdentifier":"t_rational_14_by_1","typeString":"int_const 14"},"value":"14"},"src":"1326:7:22","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"}}],"id":2412,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1325:9:22","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1337:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1325:13:22","typeDescriptions":{"typeIdentifier":"t_rational_16383_by_1","typeString":"int_const 16383"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16383_by_1","typeString":"int_const 16383"}],"id":2408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1317:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2407,"name":"uint160","nodeType":"ElementaryTypeName","src":"1317:7:22","typeDescriptions":{}}},"id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1317:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":true,"id":2421,"mutability":"constant","name":"BEFORE_INITIALIZE_FLAG","nameLocation":"1372:22:22","nodeType":"VariableDeclaration","scope":3530,"src":"1346:58:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2417,"name":"uint160","nodeType":"ElementaryTypeName","src":"1346:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"id":2420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1397:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3133","id":2419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1402:2:22","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"src":"1397:7:22","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}},"visibility":"internal"},{"constant":true,"id":2426,"mutability":"constant","name":"AFTER_INITIALIZE_FLAG","nameLocation":"1436:21:22","nodeType":"VariableDeclaration","scope":3530,"src":"1410:57:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2422,"name":"uint160","nodeType":"ElementaryTypeName","src":"1410:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1460:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3132","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1465:2:22","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"1460:7:22","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}},"visibility":"internal"},{"constant":true,"id":2431,"mutability":"constant","name":"BEFORE_ADD_LIQUIDITY_FLAG","nameLocation":"1500:25:22","nodeType":"VariableDeclaration","scope":3530,"src":"1474:61:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2427,"name":"uint160","nodeType":"ElementaryTypeName","src":"1474:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_2048_by_1","typeString":"int_const 2048"},"id":2430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1528:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3131","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1533:2:22","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"1528:7:22","typeDescriptions":{"typeIdentifier":"t_rational_2048_by_1","typeString":"int_const 2048"}},"visibility":"internal"},{"constant":true,"id":2436,"mutability":"constant","name":"AFTER_ADD_LIQUIDITY_FLAG","nameLocation":"1567:24:22","nodeType":"VariableDeclaration","scope":3530,"src":"1541:60:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2432,"name":"uint160","nodeType":"ElementaryTypeName","src":"1541:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"id":2435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1594:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3130","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1599:2:22","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1594:7:22","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}},"visibility":"internal"},{"constant":true,"id":2441,"mutability":"constant","name":"BEFORE_REMOVE_LIQUIDITY_FLAG","nameLocation":"1634:28:22","nodeType":"VariableDeclaration","scope":3530,"src":"1608:63:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2437,"name":"uint160","nodeType":"ElementaryTypeName","src":"1608:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"id":2440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1665:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"39","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1670:1:22","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"1665:6:22","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}},"visibility":"internal"},{"constant":true,"id":2446,"mutability":"constant","name":"AFTER_REMOVE_LIQUIDITY_FLAG","nameLocation":"1703:27:22","nodeType":"VariableDeclaration","scope":3530,"src":"1677:62:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2442,"name":"uint160","nodeType":"ElementaryTypeName","src":"1677:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":2445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1733:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":2444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1738:1:22","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1733:6:22","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"visibility":"internal"},{"constant":true,"id":2451,"mutability":"constant","name":"BEFORE_SWAP_FLAG","nameLocation":"1772:16:22","nodeType":"VariableDeclaration","scope":3530,"src":"1746:51:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2447,"name":"uint160","nodeType":"ElementaryTypeName","src":"1746:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"id":2450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1791:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1796:1:22","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"1791:6:22","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"}},"visibility":"internal"},{"constant":true,"id":2456,"mutability":"constant","name":"AFTER_SWAP_FLAG","nameLocation":"1829:15:22","nodeType":"VariableDeclaration","scope":3530,"src":"1803:50:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2452,"name":"uint160","nodeType":"ElementaryTypeName","src":"1803:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"id":2455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1847:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1852:1:22","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"1847:6:22","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"}},"visibility":"internal"},{"constant":true,"id":2461,"mutability":"constant","name":"BEFORE_DONATE_FLAG","nameLocation":"1886:18:22","nodeType":"VariableDeclaration","scope":3530,"src":"1860:53:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2457,"name":"uint160","nodeType":"ElementaryTypeName","src":"1860:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"id":2460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1907:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":2459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1912:1:22","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"1907:6:22","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}},"visibility":"internal"},{"constant":true,"id":2466,"mutability":"constant","name":"AFTER_DONATE_FLAG","nameLocation":"1945:17:22","nodeType":"VariableDeclaration","scope":3530,"src":"1919:52:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2462,"name":"uint160","nodeType":"ElementaryTypeName","src":"1919:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1965:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":2464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1970:1:22","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1965:6:22","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"visibility":"internal"},{"constant":true,"id":2471,"mutability":"constant","name":"BEFORE_SWAP_RETURNS_DELTA_FLAG","nameLocation":"2004:30:22","nodeType":"VariableDeclaration","scope":3530,"src":"1978:65:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2467,"name":"uint160","nodeType":"ElementaryTypeName","src":"1978:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"id":2470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2037:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:22","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"2037:6:22","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"}},"visibility":"internal"},{"constant":true,"id":2476,"mutability":"constant","name":"AFTER_SWAP_RETURNS_DELTA_FLAG","nameLocation":"2075:29:22","nodeType":"VariableDeclaration","scope":3530,"src":"2049:64:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2472,"name":"uint160","nodeType":"ElementaryTypeName","src":"2049:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":2475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2107:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2112:1:22","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2107:6:22","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"visibility":"internal"},{"constant":true,"id":2481,"mutability":"constant","name":"AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG","nameLocation":"2145:38:22","nodeType":"VariableDeclaration","scope":3530,"src":"2119:73:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2477,"name":"uint160","nodeType":"ElementaryTypeName","src":"2119:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2186:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":2479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2191:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2186:6:22","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}},"visibility":"internal"},{"constant":true,"id":2486,"mutability":"constant","name":"AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG","nameLocation":"2224:41:22","nodeType":"VariableDeclaration","scope":3530,"src":"2198:76:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2482,"name":"uint160","nodeType":"ElementaryTypeName","src":"2198:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"id":2485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2268:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30","id":2484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2273:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2268:6:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}},"visibility":"internal"},{"canonicalName":"Hooks.Permissions","id":2515,"members":[{"constant":false,"id":2488,"mutability":"mutable","name":"beforeInitialize","nameLocation":"2315:16:22","nodeType":"VariableDeclaration","scope":2515,"src":"2310:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2487,"name":"bool","nodeType":"ElementaryTypeName","src":"2310:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2490,"mutability":"mutable","name":"afterInitialize","nameLocation":"2346:15:22","nodeType":"VariableDeclaration","scope":2515,"src":"2341:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2489,"name":"bool","nodeType":"ElementaryTypeName","src":"2341:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2492,"mutability":"mutable","name":"beforeAddLiquidity","nameLocation":"2376:18:22","nodeType":"VariableDeclaration","scope":2515,"src":"2371:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2491,"name":"bool","nodeType":"ElementaryTypeName","src":"2371:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2494,"mutability":"mutable","name":"afterAddLiquidity","nameLocation":"2409:17:22","nodeType":"VariableDeclaration","scope":2515,"src":"2404:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2493,"name":"bool","nodeType":"ElementaryTypeName","src":"2404:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2496,"mutability":"mutable","name":"beforeRemoveLiquidity","nameLocation":"2441:21:22","nodeType":"VariableDeclaration","scope":2515,"src":"2436:26:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2495,"name":"bool","nodeType":"ElementaryTypeName","src":"2436:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2498,"mutability":"mutable","name":"afterRemoveLiquidity","nameLocation":"2477:20:22","nodeType":"VariableDeclaration","scope":2515,"src":"2472:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2497,"name":"bool","nodeType":"ElementaryTypeName","src":"2472:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2500,"mutability":"mutable","name":"beforeSwap","nameLocation":"2512:10:22","nodeType":"VariableDeclaration","scope":2515,"src":"2507:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2499,"name":"bool","nodeType":"ElementaryTypeName","src":"2507:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2502,"mutability":"mutable","name":"afterSwap","nameLocation":"2537:9:22","nodeType":"VariableDeclaration","scope":2515,"src":"2532:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2501,"name":"bool","nodeType":"ElementaryTypeName","src":"2532:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2504,"mutability":"mutable","name":"beforeDonate","nameLocation":"2561:12:22","nodeType":"VariableDeclaration","scope":2515,"src":"2556:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2503,"name":"bool","nodeType":"ElementaryTypeName","src":"2556:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2506,"mutability":"mutable","name":"afterDonate","nameLocation":"2588:11:22","nodeType":"VariableDeclaration","scope":2515,"src":"2583:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2505,"name":"bool","nodeType":"ElementaryTypeName","src":"2583:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2508,"mutability":"mutable","name":"beforeSwapReturnDelta","nameLocation":"2614:21:22","nodeType":"VariableDeclaration","scope":2515,"src":"2609:26:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2507,"name":"bool","nodeType":"ElementaryTypeName","src":"2609:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2510,"mutability":"mutable","name":"afterSwapReturnDelta","nameLocation":"2650:20:22","nodeType":"VariableDeclaration","scope":2515,"src":"2645:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2509,"name":"bool","nodeType":"ElementaryTypeName","src":"2645:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2512,"mutability":"mutable","name":"afterAddLiquidityReturnDelta","nameLocation":"2685:28:22","nodeType":"VariableDeclaration","scope":2515,"src":"2680:33:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2511,"name":"bool","nodeType":"ElementaryTypeName","src":"2680:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2514,"mutability":"mutable","name":"afterRemoveLiquidityReturnDelta","nameLocation":"2728:31:22","nodeType":"VariableDeclaration","scope":2515,"src":"2723:36:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2513,"name":"bool","nodeType":"ElementaryTypeName","src":"2723:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Permissions","nameLocation":"2288:11:22","nodeType":"StructDefinition","scope":3530,"src":"2281:485:22","visibility":"public"},{"documentation":{"id":2516,"nodeType":"StructuredDocumentation","src":"2772:143:22","text":"@notice Thrown if the address will not lead to the specified hook calls being called\n @param hooks The address of the hooks contract"},"errorSelector":"e65af6a0","id":2520,"name":"HookAddressNotValid","nameLocation":"2926:19:22","nodeType":"ErrorDefinition","parameters":{"id":2519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2518,"mutability":"mutable","name":"hooks","nameLocation":"2954:5:22","nodeType":"VariableDeclaration","scope":2520,"src":"2946:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2517,"name":"address","nodeType":"ElementaryTypeName","src":"2946:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2945:15:22"},"src":"2920:41:22"},{"documentation":{"id":2521,"nodeType":"StructuredDocumentation","src":"2967:44:22","text":"@notice Hook did not return its selector"},"errorSelector":"1e048e1d","id":2523,"name":"InvalidHookResponse","nameLocation":"3022:19:22","nodeType":"ErrorDefinition","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[],"src":"3041:2:22"},"src":"3016:28:22"},{"documentation":{"id":2524,"nodeType":"StructuredDocumentation","src":"3050:80:22","text":"@notice Additional context for ERC-7751 wrapped error when a hook call fails"},"errorSelector":"a9e35b2f","id":2526,"name":"HookCallFailed","nameLocation":"3141:14:22","nodeType":"ErrorDefinition","parameters":{"id":2525,"nodeType":"ParameterList","parameters":[],"src":"3155:2:22"},"src":"3135:23:22"},{"documentation":{"id":2527,"nodeType":"StructuredDocumentation","src":"3164:84:22","text":"@notice The hook's delta changed the swap from exactIn to exactOut or vice versa"},"errorSelector":"fa0b71d6","id":2529,"name":"HookDeltaExceedsSwapAmount","nameLocation":"3259:26:22","nodeType":"ErrorDefinition","parameters":{"id":2528,"nodeType":"ParameterList","parameters":[],"src":"3285:2:22"},"src":"3253:35:22"},{"body":{"id":2663,"nodeType":"Block","src":"3702:1507:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2539,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"3729:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3741:16:22","memberName":"beforeInitialize","nodeType":"MemberAccess","referencedDeclaration":2488,"src":"3729:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2543,"name":"BEFORE_INITIALIZE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2421,"src":"3780:22:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2541,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"3761:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3766:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"3761:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3761:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:74:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2546,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"3823:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3835:15:22","memberName":"afterInitialize","nodeType":"MemberAccess","referencedDeclaration":2490,"src":"3823:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2550,"name":"AFTER_INITIALIZE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"3873:21:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2548,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"3854:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3859:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"3854:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3854:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3823:72:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:166:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2554,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"3915:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3927:18:22","memberName":"beforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":2492,"src":"3915:30:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2558,"name":"BEFORE_ADD_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"3968:25:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2556,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"3949:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3954:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"3949:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3949:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3915:79:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:265:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2562,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4014:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4026:17:22","memberName":"afterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":2494,"src":"4014:29:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2566,"name":"AFTER_ADD_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2436,"src":"4066:24:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2564,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4047:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4047:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4047:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4014:77:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:362:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2570,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4111:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4123:21:22","memberName":"beforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":2496,"src":"4111:33:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2574,"name":"BEFORE_REMOVE_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"4167:28:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2572,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4148:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4153:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4148:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4148:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4111:85:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:467:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2578,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4216:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4228:20:22","memberName":"afterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":2498,"src":"4216:32:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2582,"name":"AFTER_REMOVE_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2446,"src":"4271:27:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2580,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4252:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4257:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4252:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4252:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4216:83:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:570:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2586,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4319:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4331:10:22","memberName":"beforeSwap","nodeType":"MemberAccess","referencedDeclaration":2500,"src":"4319:22:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2590,"name":"BEFORE_SWAP_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"4364:16:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2588,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4345:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4350:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4345:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4345:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4319:62:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:652:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2594,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4401:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4413:9:22","memberName":"afterSwap","nodeType":"MemberAccess","referencedDeclaration":2502,"src":"4401:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2598,"name":"AFTER_SWAP_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"4445:15:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2596,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4426:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4431:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4426:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4426:35:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4401:60:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:732:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2602,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4481:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4493:12:22","memberName":"beforeDonate","nodeType":"MemberAccess","referencedDeclaration":2504,"src":"4481:24:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2606,"name":"BEFORE_DONATE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"4528:18:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2604,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4509:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4514:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4509:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4509:38:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4481:66:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:818:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2610,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4567:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4579:11:22","memberName":"afterDonate","nodeType":"MemberAccess","referencedDeclaration":2506,"src":"4567:23:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2614,"name":"AFTER_DONATE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"4613:17:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2612,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4594:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4599:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4594:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4594:37:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4567:64:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:902:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2618,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4651:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4663:21:22","memberName":"beforeSwapReturnDelta","nodeType":"MemberAccess","referencedDeclaration":2508,"src":"4651:33:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2622,"name":"BEFORE_SWAP_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"4707:30:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2620,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4688:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4693:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4688:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4688:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4651:87:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:1009:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2626,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4758:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4770:20:22","memberName":"afterSwapReturnDelta","nodeType":"MemberAccess","referencedDeclaration":2510,"src":"4758:32:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2630,"name":"AFTER_SWAP_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"4813:29:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2628,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4794:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4799:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4794:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4794:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4758:85:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:1114:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2634,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4863:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4875:28:22","memberName":"afterAddLiquidityReturnDelta","nodeType":"MemberAccess","referencedDeclaration":2512,"src":"4863:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2638,"name":"AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"4926:38:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2636,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4907:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4912:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"4907:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4907:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4863:102:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:1236:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2642,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4985:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions memory"}},"id":2643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4997:31:22","memberName":"afterRemoveLiquidityReturnDelta","nodeType":"MemberAccess","referencedDeclaration":2514,"src":"4985:43:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2646,"name":"AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"5071:41:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2644,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"5052:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5057:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"5052:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5052:61:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4985:128:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3729:1384:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2662,"nodeType":"IfStatement","src":"3712:1491:22","trueBody":{"id":2661,"nodeType":"Block","src":"5124:79:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":2657,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"5186:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":2656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5178:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2655,"name":"address","nodeType":"ElementaryTypeName","src":"5178:7:22","typeDescriptions":{}}},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5178:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":2650,"name":"HookAddressNotValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"5138:19:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5158:8:22","memberName":"selector","nodeType":"MemberAccess","src":"5138:28:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5167:10:22","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2284,"src":"5138:39:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_address_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,address) pure"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5138:54:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2660,"nodeType":"ExpressionStatement","src":"5138:54:22"}]}}]},"documentation":{"id":2530,"nodeType":"StructuredDocumentation","src":"3294:311:22","text":"@notice Utility function intended to be used in hook constructors to ensure\n the deployed hooks address causes the intended hooks to be called\n @param permissions The hooks that are intended to be called\n @dev permissions param is memory as the function will be called from constructors"},"id":2664,"implemented":true,"kind":"function","modifiers":[],"name":"validateHookPermissions","nameLocation":"3619:23:22","nodeType":"FunctionDefinition","parameters":{"id":2537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"mutability":"mutable","name":"self","nameLocation":"3650:4:22","nodeType":"VariableDeclaration","scope":2664,"src":"3643:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2532,"nodeType":"UserDefinedTypeName","pathNode":{"id":2531,"name":"IHooks","nameLocations":["3643:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"3643:6:22"},"referencedDeclaration":1840,"src":"3643:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":2536,"mutability":"mutable","name":"permissions","nameLocation":"3675:11:22","nodeType":"VariableDeclaration","scope":2664,"src":"3656:30:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_memory_ptr","typeString":"struct Hooks.Permissions"},"typeName":{"id":2535,"nodeType":"UserDefinedTypeName","pathNode":{"id":2534,"name":"Permissions","nameLocations":["3656:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2515,"src":"3656:11:22"},"referencedDeclaration":2515,"src":"3656:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Permissions_$2515_storage_ptr","typeString":"struct Hooks.Permissions"}},"visibility":"internal"}],"src":"3642:45:22"},"returnParameters":{"id":2538,"nodeType":"ParameterList","parameters":[],"src":"3702:0:22"},"scope":3530,"src":"3610:1599:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2759,"nodeType":"Block","src":"5567:1037:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5703:37:22","subExpression":{"arguments":[{"id":2677,"name":"BEFORE_SWAP_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"5723:16:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2675,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"5704:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5709:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"5704:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5704:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":2682,"name":"BEFORE_SWAP_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"5763:30:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2680,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"5744:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5749:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"5744:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5744:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5703:91:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2687,"nodeType":"IfStatement","src":"5699:109:22","trueBody":{"expression":{"hexValue":"66616c7365","id":2685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5803:5:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2674,"id":2686,"nodeType":"Return","src":"5796:12:22"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5822:36:22","subExpression":{"arguments":[{"id":2690,"name":"AFTER_SWAP_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5842:15:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2688,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"5823:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5828:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"5823:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5823:35:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":2695,"name":"AFTER_SWAP_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"5881:29:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2693,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"5862:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5867:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"5862:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5822:89:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2700,"nodeType":"IfStatement","src":"5818:107:22","trueBody":{"expression":{"hexValue":"66616c7365","id":2698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5920:5:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2674,"id":2699,"nodeType":"Return","src":"5913:12:22"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5939:45:22","subExpression":{"arguments":[{"id":2703,"name":"AFTER_ADD_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2436,"src":"5959:24:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2701,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"5940:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5945:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"5940:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5940:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":2708,"name":"AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"6007:38:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2706,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"5988:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5993:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"5988:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5988:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5939:107:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2714,"nodeType":"IfStatement","src":"5935:158:22","trueBody":{"id":2713,"nodeType":"Block","src":"6056:37:22","statements":[{"expression":{"hexValue":"66616c7365","id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6077:5:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2674,"id":2712,"nodeType":"Return","src":"6070:12:22"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6119:48:22","subExpression":{"arguments":[{"id":2717,"name":"AFTER_REMOVE_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2446,"src":"6139:27:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2715,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"6120:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6125:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"6120:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6120:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":2722,"name":"AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"6206:41:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2720,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"6187:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6192:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"6187:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6187:61:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6119:129:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2727,"nodeType":"IfStatement","src":"6102:169:22","trueBody":{"expression":{"hexValue":"66616c7365","id":2725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6266:5:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2674,"id":2726,"nodeType":"Return","src":"6259:12:22"}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2730,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"6463:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":2729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6455:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2728,"name":"address","nodeType":"ElementaryTypeName","src":"6455:7:22","typeDescriptions":{}}},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6455:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6480:1:22","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":2733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6472:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2732,"name":"address","nodeType":"ElementaryTypeName","src":"6472:7:22","typeDescriptions":{}}},"id":2735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6472:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6455:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2745,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"6548:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":2744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6540:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2743,"name":"address","nodeType":"ElementaryTypeName","src":"6540:7:22","typeDescriptions":{}}},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6540:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6532:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2741,"name":"uint160","nodeType":"ElementaryTypeName","src":"6532:7:22","typeDescriptions":{}}},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6532:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2748,"name":"ALL_HOOK_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"6557:13:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6532:38:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6573:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6532:42:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2752,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2670,"src":"6578:3:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6582:12:22","memberName":"isDynamicFee","nodeType":"MemberAccess","referencedDeclaration":3575,"src":"6578:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6578:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6532:64:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2756,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6531:66:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6455:142:22","trueExpression":{"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6497:19:22","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2737,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2670,"src":"6498:3:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6502:12:22","memberName":"isDynamicFee","nodeType":"MemberAccess","referencedDeclaration":3575,"src":"6498:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2674,"id":2758,"nodeType":"Return","src":"6448:149:22"}]},"documentation":{"id":2665,"nodeType":"StructuredDocumentation","src":"5215:265:22","text":"@notice Ensures that the hook address includes at least one hook flag or dynamic fees, or is the 0 address\n @param self The hook to verify\n @param fee The fee of the pool the hook is used with\n @return bool True if the hook address is valid"},"id":2760,"implemented":true,"kind":"function","modifiers":[],"name":"isValidHookAddress","nameLocation":"5494:18:22","nodeType":"FunctionDefinition","parameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2668,"mutability":"mutable","name":"self","nameLocation":"5520:4:22","nodeType":"VariableDeclaration","scope":2760,"src":"5513:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2667,"nodeType":"UserDefinedTypeName","pathNode":{"id":2666,"name":"IHooks","nameLocations":["5513:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"5513:6:22"},"referencedDeclaration":1840,"src":"5513:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":2670,"mutability":"mutable","name":"fee","nameLocation":"5533:3:22","nodeType":"VariableDeclaration","scope":2760,"src":"5526:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":2669,"name":"uint24","nodeType":"ElementaryTypeName","src":"5526:6:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"5512:25:22"},"returnParameters":{"id":2674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2673,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2760,"src":"5561:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2672,"name":"bool","nodeType":"ElementaryTypeName","src":"5561:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5560:6:22"},"scope":3530,"src":"5485:1119:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2815,"nodeType":"Block","src":"6869:1187:22","statements":[{"assignments":[2772],"declarations":[{"constant":false,"id":2772,"mutability":"mutable","name":"success","nameLocation":"6884:7:22","nodeType":"VariableDeclaration","scope":2815,"src":"6879:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2771,"name":"bool","nodeType":"ElementaryTypeName","src":"6879:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2773,"nodeType":"VariableDeclarationStatement","src":"6879:12:22"},{"AST":{"nativeSrc":"6926:91:22","nodeType":"YulBlock","src":"6926:91:22","statements":[{"nativeSrc":"6940:67:22","nodeType":"YulAssignment","src":"6940:67:22","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"6956:3:22","nodeType":"YulIdentifier","src":"6956:3:22"},"nativeSrc":"6956:5:22","nodeType":"YulFunctionCall","src":"6956:5:22"},{"name":"self","nativeSrc":"6963:4:22","nodeType":"YulIdentifier","src":"6963:4:22"},{"kind":"number","nativeSrc":"6969:1:22","nodeType":"YulLiteral","src":"6969:1:22","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"6976:4:22","nodeType":"YulIdentifier","src":"6976:4:22"},{"kind":"number","nativeSrc":"6982:4:22","nodeType":"YulLiteral","src":"6982:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6972:3:22","nodeType":"YulIdentifier","src":"6972:3:22"},"nativeSrc":"6972:15:22","nodeType":"YulFunctionCall","src":"6972:15:22"},{"arguments":[{"name":"data","nativeSrc":"6995:4:22","nodeType":"YulIdentifier","src":"6995:4:22"}],"functionName":{"name":"mload","nativeSrc":"6989:5:22","nodeType":"YulIdentifier","src":"6989:5:22"},"nativeSrc":"6989:11:22","nodeType":"YulFunctionCall","src":"6989:11:22"},{"kind":"number","nativeSrc":"7002:1:22","nodeType":"YulLiteral","src":"7002:1:22","type":"","value":"0"},{"kind":"number","nativeSrc":"7005:1:22","nodeType":"YulLiteral","src":"7005:1:22","type":"","value":"0"}],"functionName":{"name":"call","nativeSrc":"6951:4:22","nodeType":"YulIdentifier","src":"6951:4:22"},"nativeSrc":"6951:56:22","nodeType":"YulFunctionCall","src":"6951:56:22"},"variableNames":[{"name":"success","nativeSrc":"6940:7:22","nodeType":"YulIdentifier","src":"6940:7:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2766,"isOffset":false,"isSlot":false,"src":"6976:4:22","valueSize":1},{"declaration":2766,"isOffset":false,"isSlot":false,"src":"6995:4:22","valueSize":1},{"declaration":2764,"isOffset":false,"isSlot":false,"src":"6963:4:22","valueSize":1},{"declaration":2772,"isOffset":false,"isSlot":false,"src":"6940:7:22","valueSize":1}],"flags":["memory-safe"],"id":2774,"nodeType":"InlineAssembly","src":"6901:116:22"},{"condition":{"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7111:8:22","subExpression":{"id":2775,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"7112:7:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2792,"nodeType":"IfStatement","src":"7107:102:22","trueBody":{"expression":{"arguments":[{"arguments":[{"id":2782,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"7164:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":2781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7156:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2780,"name":"address","nodeType":"ElementaryTypeName","src":"7156:7:22","typeDescriptions":{}}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7156:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2786,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"7178:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7171:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2784,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7171:6:22","typeDescriptions":{}}},"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7171:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":2788,"name":"HookCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2526,"src":"7185:14:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7200:8:22","memberName":"selector","nodeType":"MemberAccess","src":"7185:23:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2777,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"7121:12:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CustomRevert_$2358_$","typeString":"type(library CustomRevert)"}},"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7134:21:22","memberName":"bubbleUpAndRevertWith","nodeType":"MemberAccess","referencedDeclaration":2357,"src":"7121:34:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$","typeString":"function (address,bytes4,bytes4) pure"}},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7121:88:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2791,"nodeType":"ExpressionStatement","src":"7121:88:22"}},{"AST":{"nativeSrc":"7305:479:22","nodeType":"YulBlock","src":"7305:479:22","statements":[{"nativeSrc":"7390:21:22","nodeType":"YulAssignment","src":"7390:21:22","value":{"arguments":[{"kind":"number","nativeSrc":"7406:4:22","nodeType":"YulLiteral","src":"7406:4:22","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"7400:5:22","nodeType":"YulIdentifier","src":"7400:5:22"},"nativeSrc":"7400:11:22","nodeType":"YulFunctionCall","src":"7400:11:22"},"variableNames":[{"name":"result","nativeSrc":"7390:6:22","nodeType":"YulIdentifier","src":"7390:6:22"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7519:4:22","nodeType":"YulLiteral","src":"7519:4:22","type":"","value":"0x40"},{"arguments":[{"name":"result","nativeSrc":"7529:6:22","nodeType":"YulIdentifier","src":"7529:6:22"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"7545:14:22","nodeType":"YulIdentifier","src":"7545:14:22"},"nativeSrc":"7545:16:22","nodeType":"YulFunctionCall","src":"7545:16:22"},{"kind":"number","nativeSrc":"7563:4:22","nodeType":"YulLiteral","src":"7563:4:22","type":"","value":"0x3f"}],"functionName":{"name":"add","nativeSrc":"7541:3:22","nodeType":"YulIdentifier","src":"7541:3:22"},"nativeSrc":"7541:27:22","nodeType":"YulFunctionCall","src":"7541:27:22"},{"arguments":[{"kind":"number","nativeSrc":"7574:4:22","nodeType":"YulLiteral","src":"7574:4:22","type":"","value":"0x1f"}],"functionName":{"name":"not","nativeSrc":"7570:3:22","nodeType":"YulIdentifier","src":"7570:3:22"},"nativeSrc":"7570:9:22","nodeType":"YulFunctionCall","src":"7570:9:22"}],"functionName":{"name":"and","nativeSrc":"7537:3:22","nodeType":"YulIdentifier","src":"7537:3:22"},"nativeSrc":"7537:43:22","nodeType":"YulFunctionCall","src":"7537:43:22"}],"functionName":{"name":"add","nativeSrc":"7525:3:22","nodeType":"YulIdentifier","src":"7525:3:22"},"nativeSrc":"7525:56:22","nodeType":"YulFunctionCall","src":"7525:56:22"}],"functionName":{"name":"mstore","nativeSrc":"7512:6:22","nodeType":"YulIdentifier","src":"7512:6:22"},"nativeSrc":"7512:70:22","nodeType":"YulFunctionCall","src":"7512:70:22"},"nativeSrc":"7512:70:22","nodeType":"YulExpressionStatement","src":"7512:70:22"},{"expression":{"arguments":[{"name":"result","nativeSrc":"7640:6:22","nodeType":"YulIdentifier","src":"7640:6:22"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"7648:14:22","nodeType":"YulIdentifier","src":"7648:14:22"},"nativeSrc":"7648:16:22","nodeType":"YulFunctionCall","src":"7648:16:22"}],"functionName":{"name":"mstore","nativeSrc":"7633:6:22","nodeType":"YulIdentifier","src":"7633:6:22"},"nativeSrc":"7633:32:22","nodeType":"YulFunctionCall","src":"7633:32:22"},"nativeSrc":"7633:32:22","nodeType":"YulExpressionStatement","src":"7633:32:22"},{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"7739:6:22","nodeType":"YulIdentifier","src":"7739:6:22"},{"kind":"number","nativeSrc":"7747:4:22","nodeType":"YulLiteral","src":"7747:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7735:3:22","nodeType":"YulIdentifier","src":"7735:3:22"},"nativeSrc":"7735:17:22","nodeType":"YulFunctionCall","src":"7735:17:22"},{"kind":"number","nativeSrc":"7754:1:22","nodeType":"YulLiteral","src":"7754:1:22","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"7757:14:22","nodeType":"YulIdentifier","src":"7757:14:22"},"nativeSrc":"7757:16:22","nodeType":"YulFunctionCall","src":"7757:16:22"}],"functionName":{"name":"returndatacopy","nativeSrc":"7720:14:22","nodeType":"YulIdentifier","src":"7720:14:22"},"nativeSrc":"7720:54:22","nodeType":"YulFunctionCall","src":"7720:54:22"},"nativeSrc":"7720:54:22","nodeType":"YulExpressionStatement","src":"7720:54:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2769,"isOffset":false,"isSlot":false,"src":"7390:6:22","valueSize":1},{"declaration":2769,"isOffset":false,"isSlot":false,"src":"7529:6:22","valueSize":1},{"declaration":2769,"isOffset":false,"isSlot":false,"src":"7640:6:22","valueSize":1},{"declaration":2769,"isOffset":false,"isSlot":false,"src":"7739:6:22","valueSize":1}],"flags":["memory-safe"],"id":2793,"nodeType":"InlineAssembly","src":"7280:504:22"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2794,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"7914:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7921:6:22","memberName":"length","nodeType":"MemberAccess","src":"7914:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":2796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7930:2:22","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7914:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2798,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"7936:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7943:13:22","memberName":"parseSelector","nodeType":"MemberAccess","referencedDeclaration":7581,"src":"7936:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes4)"}},"id":2800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7936:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2801,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"7962:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7967:13:22","memberName":"parseSelector","nodeType":"MemberAccess","referencedDeclaration":7581,"src":"7962:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes4)"}},"id":2803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7962:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"7936:46:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7914:68:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2814,"nodeType":"IfStatement","src":"7910:140:22","trueBody":{"id":2813,"nodeType":"Block","src":"7984:66:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":2806,"name":"InvalidHookResponse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2523,"src":"7998:19:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8018:8:22","memberName":"selector","nodeType":"MemberAccess","src":"7998:28:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8027:10:22","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"7998:39:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":2811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7998:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2812,"nodeType":"ExpressionStatement","src":"7998:41:22"}]}}]},"documentation":{"id":2761,"nodeType":"StructuredDocumentation","src":"6610:165:22","text":"@notice performs a hook call using the given calldata on the given hook that doesn't return a delta\n @return result The complete data returned by the hook"},"id":2816,"implemented":true,"kind":"function","modifiers":[],"name":"callHook","nameLocation":"6789:8:22","nodeType":"FunctionDefinition","parameters":{"id":2767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"mutability":"mutable","name":"self","nameLocation":"6805:4:22","nodeType":"VariableDeclaration","scope":2816,"src":"6798:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2763,"nodeType":"UserDefinedTypeName","pathNode":{"id":2762,"name":"IHooks","nameLocations":["6798:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"6798:6:22"},"referencedDeclaration":1840,"src":"6798:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":2766,"mutability":"mutable","name":"data","nameLocation":"6824:4:22","nodeType":"VariableDeclaration","scope":2816,"src":"6811:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2765,"name":"bytes","nodeType":"ElementaryTypeName","src":"6811:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6797:32:22"},"returnParameters":{"id":2770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2769,"mutability":"mutable","name":"result","nameLocation":"6861:6:22","nodeType":"VariableDeclaration","scope":2816,"src":"6848:19:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2768,"name":"bytes","nodeType":"ElementaryTypeName","src":"6848:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6847:21:22"},"scope":3530,"src":"6780:1276:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2857,"nodeType":"Block","src":"8305:376:22","statements":[{"assignments":[2830],"declarations":[{"constant":false,"id":2830,"mutability":"mutable","name":"result","nameLocation":"8328:6:22","nodeType":"VariableDeclaration","scope":2857,"src":"8315:19:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2829,"name":"bytes","nodeType":"ElementaryTypeName","src":"8315:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2835,"initialValue":{"arguments":[{"id":2832,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2820,"src":"8346:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},{"id":2833,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"8352:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2831,"name":"callHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"8337:8:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8337:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8315:42:22"},{"condition":{"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8449:12:22","subExpression":{"id":2836,"name":"parseReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2824,"src":"8450:11:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2840,"nodeType":"IfStatement","src":"8445:26:22","trueBody":{"expression":{"hexValue":"30","id":2838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8470:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2828,"id":2839,"nodeType":"Return","src":"8463:8:22"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2841,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2830,"src":"8570:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8577:6:22","memberName":"length","nodeType":"MemberAccess","src":"8570:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3634","id":2843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8587:2:22","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8570:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2852,"nodeType":"IfStatement","src":"8566:66:22","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":2845,"name":"InvalidHookResponse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2523,"src":"8591:19:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8611:8:22","memberName":"selector","nodeType":"MemberAccess","src":"8591:28:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8620:10:22","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"8591:39:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8591:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2851,"nodeType":"ExpressionStatement","src":"8591:41:22"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2830,"src":"8649:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8656:16:22","memberName":"parseReturnDelta","nodeType":"MemberAccess","referencedDeclaration":7599,"src":"8649:23:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_int256_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (int256)"}},"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8649:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2828,"id":2856,"nodeType":"Return","src":"8642:32:22"}]},"documentation":{"id":2817,"nodeType":"StructuredDocumentation","src":"8062:129:22","text":"@notice performs a hook call using the given calldata on the given hook\n @return int256 The delta returned by the hook"},"id":2858,"implemented":true,"kind":"function","modifiers":[],"name":"callHookWithReturnDelta","nameLocation":"8205:23:22","nodeType":"FunctionDefinition","parameters":{"id":2825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2820,"mutability":"mutable","name":"self","nameLocation":"8236:4:22","nodeType":"VariableDeclaration","scope":2858,"src":"8229:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2819,"nodeType":"UserDefinedTypeName","pathNode":{"id":2818,"name":"IHooks","nameLocations":["8229:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"8229:6:22"},"referencedDeclaration":1840,"src":"8229:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":2822,"mutability":"mutable","name":"data","nameLocation":"8255:4:22","nodeType":"VariableDeclaration","scope":2858,"src":"8242:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2821,"name":"bytes","nodeType":"ElementaryTypeName","src":"8242:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2824,"mutability":"mutable","name":"parseReturn","nameLocation":"8266:11:22","nodeType":"VariableDeclaration","scope":2858,"src":"8261:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2823,"name":"bool","nodeType":"ElementaryTypeName","src":"8261:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8228:50:22"},"returnParameters":{"id":2828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2858,"src":"8297:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2826,"name":"int256","nodeType":"ElementaryTypeName","src":"8297:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8296:8:22"},"scope":3530,"src":"8196:485:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2874,"nodeType":"Block","src":"8800:75:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2864,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8814:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8818:6:22","memberName":"sender","nodeType":"MemberAccess","src":"8814:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2868,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"8836:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":2867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8828:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2866,"name":"address","nodeType":"ElementaryTypeName","src":"8828:7:22","typeDescriptions":{}}},"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8828:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8814:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2873,"nodeType":"IfStatement","src":"8810:59:22","trueBody":{"id":2872,"nodeType":"Block","src":"8843:26:22","statements":[{"id":2871,"nodeType":"PlaceholderStatement","src":"8857:1:22"}]}}]},"documentation":{"id":2859,"nodeType":"StructuredDocumentation","src":"8687:75:22","text":"@notice modifier to prevent calling a hook if they initiated the action"},"id":2875,"name":"noSelfCall","nameLocation":"8776:10:22","nodeType":"ModifierDefinition","parameters":{"id":2863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2862,"mutability":"mutable","name":"self","nameLocation":"8794:4:22","nodeType":"VariableDeclaration","scope":2875,"src":"8787:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2861,"nodeType":"UserDefinedTypeName","pathNode":{"id":2860,"name":"IHooks","nameLocations":["8787:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"8787:6:22"},"referencedDeclaration":1840,"src":"8787:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"8786:13:22"},"src":"8767:108:22","virtual":false,"visibility":"internal"},{"body":{"id":2911,"nodeType":"Block","src":"9075:176:22","statements":[{"condition":{"arguments":[{"id":2892,"name":"BEFORE_INITIALIZE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2421,"src":"9108:22:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2890,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"9089:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9094:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"9089:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9089:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2910,"nodeType":"IfStatement","src":"9085:160:22","trueBody":{"id":2909,"nodeType":"Block","src":"9133:112:22","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":2899,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"9176:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9183:16:22","memberName":"beforeInitialize","nodeType":"MemberAccess","referencedDeclaration":1666,"src":"9176:23:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint160_$returns$_t_bytes4_$","typeString":"function IHooks.beforeInitialize(address,struct PoolKey calldata,uint160) returns (bytes4)"}},{"components":[{"expression":{"id":2901,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9202:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9206:6:22","memberName":"sender","nodeType":"MemberAccess","src":"9202:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2903,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"9214:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":2904,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"9219:12:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":2905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9201:31:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint160_$","typeString":"tuple(address,struct PoolKey memory,uint160)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint160_$returns$_t_bytes4_$","typeString":"function IHooks.beforeInitialize(address,struct PoolKey calldata,uint160) returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint160_$","typeString":"tuple(address,struct PoolKey memory,uint160)"}],"expression":{"id":2897,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9161:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9165:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"9161:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9161:72:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2894,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"9147:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9152:8:22","memberName":"callHook","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"9147:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9147:87:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2908,"nodeType":"ExpressionStatement","src":"9147:87:22"}]}}]},"documentation":{"id":2876,"nodeType":"StructuredDocumentation","src":"8881:82:22","text":"@notice calls beforeInitialize hook if permissioned and validates return value"},"id":2912,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2887,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"9069:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"id":2888,"kind":"modifierInvocation","modifierName":{"id":2886,"name":"noSelfCall","nameLocations":["9058:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2875,"src":"9058:10:22"},"nodeType":"ModifierInvocation","src":"9058:16:22"}],"name":"beforeInitialize","nameLocation":"8977:16:22","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2879,"mutability":"mutable","name":"self","nameLocation":"9001:4:22","nodeType":"VariableDeclaration","scope":2912,"src":"8994:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2878,"nodeType":"UserDefinedTypeName","pathNode":{"id":2877,"name":"IHooks","nameLocations":["8994:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"8994:6:22"},"referencedDeclaration":1840,"src":"8994:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":2882,"mutability":"mutable","name":"key","nameLocation":"9022:3:22","nodeType":"VariableDeclaration","scope":2912,"src":"9007:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":2881,"nodeType":"UserDefinedTypeName","pathNode":{"id":2880,"name":"PoolKey","nameLocations":["9007:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"9007:7:22"},"referencedDeclaration":6871,"src":"9007:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":2884,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"9035:12:22","nodeType":"VariableDeclaration","scope":2912,"src":"9027:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2883,"name":"uint160","nodeType":"ElementaryTypeName","src":"9027:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"8993:55:22"},"returnParameters":{"id":2889,"nodeType":"ParameterList","parameters":[],"src":"9075:0:22"},"scope":3530,"src":"8968:283:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2951,"nodeType":"Block","src":"9481:180:22","statements":[{"condition":{"arguments":[{"id":2931,"name":"AFTER_INITIALIZE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"9514:21:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2929,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"9495:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9500:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"9495:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9495:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2950,"nodeType":"IfStatement","src":"9491:164:22","trueBody":{"id":2949,"nodeType":"Block","src":"9538:117:22","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":2938,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"9581:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":2939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9588:15:22","memberName":"afterInitialize","nodeType":"MemberAccess","referencedDeclaration":1681,"src":"9581:22:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint160_$_t_int24_$returns$_t_bytes4_$","typeString":"function IHooks.afterInitialize(address,struct PoolKey calldata,uint160,int24) returns (bytes4)"}},{"components":[{"expression":{"id":2940,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9606:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9610:6:22","memberName":"sender","nodeType":"MemberAccess","src":"9606:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2942,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2919,"src":"9618:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":2943,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"9623:12:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":2944,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2923,"src":"9637:4:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":2945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9605:37:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint160_$_t_int24_$","typeString":"tuple(address,struct PoolKey memory,uint160,int24)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint160_$_t_int24_$returns$_t_bytes4_$","typeString":"function IHooks.afterInitialize(address,struct PoolKey calldata,uint160,int24) returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint160_$_t_int24_$","typeString":"tuple(address,struct PoolKey memory,uint160,int24)"}],"expression":{"id":2936,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9566:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9570:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"9566:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9566:77:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2933,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"9552:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9557:8:22","memberName":"callHook","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"9552:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9552:92:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2948,"nodeType":"ExpressionStatement","src":"9552:92:22"}]}}]},"documentation":{"id":2913,"nodeType":"StructuredDocumentation","src":"9257:81:22","text":"@notice calls afterInitialize hook if permissioned and validates return value"},"id":2952,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2926,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"9471:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"id":2927,"kind":"modifierInvocation","modifierName":{"id":2925,"name":"noSelfCall","nameLocations":["9460:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2875,"src":"9460:10:22"},"nodeType":"ModifierInvocation","src":"9460:16:22"}],"name":"afterInitialize","nameLocation":"9352:15:22","nodeType":"FunctionDefinition","parameters":{"id":2924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"self","nameLocation":"9375:4:22","nodeType":"VariableDeclaration","scope":2952,"src":"9368:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2915,"nodeType":"UserDefinedTypeName","pathNode":{"id":2914,"name":"IHooks","nameLocations":["9368:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"9368:6:22"},"referencedDeclaration":1840,"src":"9368:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":2919,"mutability":"mutable","name":"key","nameLocation":"9396:3:22","nodeType":"VariableDeclaration","scope":2952,"src":"9381:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":2918,"nodeType":"UserDefinedTypeName","pathNode":{"id":2917,"name":"PoolKey","nameLocations":["9381:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"9381:7:22"},"referencedDeclaration":6871,"src":"9381:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":2921,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"9409:12:22","nodeType":"VariableDeclaration","scope":2952,"src":"9401:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2920,"name":"uint160","nodeType":"ElementaryTypeName","src":"9401:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":2923,"mutability":"mutable","name":"tick","nameLocation":"9429:4:22","nodeType":"VariableDeclaration","scope":2952,"src":"9423:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2922,"name":"int24","nodeType":"ElementaryTypeName","src":"9423:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"9367:67:22"},"returnParameters":{"id":2928,"nodeType":"ParameterList","parameters":[],"src":"9481:0:22"},"scope":3530,"src":"9343:318:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3024,"nodeType":"Block","src":"9949:425:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2970,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2962,"src":"9963:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":2971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9970:14:22","memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":6884,"src":"9963:21:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9987:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9963:25:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":2976,"name":"BEFORE_ADD_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"10011:25:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2974,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"9992:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9997:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"9992:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":2977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9992:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9963:74:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2996,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2962,"src":"10167:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":2997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10174:14:22","memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":6884,"src":"10167:21:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":2998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10192:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10167:26:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":3002,"name":"BEFORE_REMOVE_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"10216:28:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3000,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"10197:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10202:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"10197:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10197:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10167:78:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3022,"nodeType":"IfStatement","src":"10163:205:22","trueBody":{"id":3021,"nodeType":"Block","src":"10247:121:22","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":3010,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"10290:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":3011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10297:21:22","memberName":"beforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":1738,"src":"10290:28:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.beforeRemoveLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,bytes calldata) returns (bytes4)"}},{"components":[{"expression":{"id":3012,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10321:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10325:6:22","memberName":"sender","nodeType":"MemberAccess","src":"10321:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3014,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"10333:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":3015,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2962,"src":"10338:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},{"id":3016,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"10346:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3017,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10320:35:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.beforeRemoveLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,bytes calldata) returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,bytes calldata)"}],"expression":{"id":3008,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10275:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10279:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"10275:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10275:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3005,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"10261:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10266:8:22","memberName":"callHook","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"10261:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":3019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10261:96:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3020,"nodeType":"ExpressionStatement","src":"10261:96:22"}]}},"id":3023,"nodeType":"IfStatement","src":"9959:409:22","trueBody":{"id":2995,"nodeType":"Block","src":"10039:118:22","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":2984,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"10082:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":2985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10089:18:22","memberName":"beforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":1697,"src":"10082:25:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.beforeAddLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,bytes calldata) returns (bytes4)"}},{"components":[{"expression":{"id":2986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10110:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10114:6:22","memberName":"sender","nodeType":"MemberAccess","src":"10110:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2988,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"10122:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":2989,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2962,"src":"10127:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},{"id":2990,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"10135:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":2991,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10109:35:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.beforeAddLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,bytes calldata) returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,bytes calldata)"}],"expression":{"id":2982,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10067:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10071:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"10067:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10067:78:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2979,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"10053:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":2981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10058:8:22","memberName":"callHook","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"10053:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":2993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10053:93:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2994,"nodeType":"ExpressionStatement","src":"10053:93:22"}]}}]},"documentation":{"id":2953,"nodeType":"StructuredDocumentation","src":"9667:87:22","text":"@notice calls beforeModifyLiquidity hook if permissioned and validates return value"},"id":3025,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2967,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"9943:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"id":2968,"kind":"modifierInvocation","modifierName":{"id":2966,"name":"noSelfCall","nameLocations":["9932:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2875,"src":"9932:10:22"},"nodeType":"ModifierInvocation","src":"9932:16:22"}],"name":"beforeModifyLiquidity","nameLocation":"9768:21:22","nodeType":"FunctionDefinition","parameters":{"id":2965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2956,"mutability":"mutable","name":"self","nameLocation":"9806:4:22","nodeType":"VariableDeclaration","scope":3025,"src":"9799:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":2955,"nodeType":"UserDefinedTypeName","pathNode":{"id":2954,"name":"IHooks","nameLocations":["9799:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"9799:6:22"},"referencedDeclaration":1840,"src":"9799:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":2959,"mutability":"mutable","name":"key","nameLocation":"9835:3:22","nodeType":"VariableDeclaration","scope":3025,"src":"9820:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":2958,"nodeType":"UserDefinedTypeName","pathNode":{"id":2957,"name":"PoolKey","nameLocations":["9820:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"9820:7:22"},"referencedDeclaration":6871,"src":"9820:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":2962,"mutability":"mutable","name":"params","nameLocation":"9877:6:22","nodeType":"VariableDeclaration","scope":3025,"src":"9848:35:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":2961,"nodeType":"UserDefinedTypeName","pathNode":{"id":2960,"name":"ModifyLiquidityParams","nameLocations":["9848:21:22"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"9848:21:22"},"referencedDeclaration":6887,"src":"9848:21:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":2964,"mutability":"mutable","name":"hookData","nameLocation":"9908:8:22","nodeType":"VariableDeclaration","scope":3025,"src":"9893:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2963,"name":"bytes","nodeType":"ElementaryTypeName","src":"9893:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9789:133:22"},"returnParameters":{"id":2969,"nodeType":"ParameterList","parameters":[],"src":"9949:0:22"},"scope":3530,"src":"9759:615:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3152,"nodeType":"Block","src":"10764:1265:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3052,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10778:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10782:6:22","memberName":"sender","nodeType":"MemberAccess","src":"10778:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3056,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"10800:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":3055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10792:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3054,"name":"address","nodeType":"ElementaryTypeName","src":"10792:7:22","typeDescriptions":{}}},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10792:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10778:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3064,"nodeType":"IfStatement","src":"10774:79:22","trueBody":{"expression":{"components":[{"id":3059,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"10815:5:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"expression":{"id":3060,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"10822:19:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalanceDeltaLibrary_$6469_$","typeString":"type(library BalanceDeltaLibrary)"}},"id":3061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10842:10:22","memberName":"ZERO_DELTA","nodeType":"MemberAccess","referencedDeclaration":6448,"src":"10822:30:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"id":3062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10814:39:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"functionReturnParameters":3051,"id":3063,"nodeType":"Return","src":"10807:46:22"}},{"expression":{"id":3067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3065,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"10864:11:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3066,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"10878:5:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"10864:19:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3068,"nodeType":"ExpressionStatement","src":"10864:19:22"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3069,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"10897:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},"id":3070,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10904:14:22","memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":6884,"src":"10897:21:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10897:25:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3150,"nodeType":"Block","src":"11472:551:22","statements":[{"condition":{"arguments":[{"id":3114,"name":"AFTER_REMOVE_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2446,"src":"11509:27:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3112,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"11490:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11495:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"11490:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11490:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3149,"nodeType":"IfStatement","src":"11486:527:22","trueBody":{"id":3148,"nodeType":"Block","src":"11539:474:22","statements":[{"expression":{"id":3140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3116,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"11557:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":3123,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"11706:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":3124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11713:20:22","memberName":"afterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":1763,"src":"11706:27:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function IHooks.afterRemoveLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,BalanceDelta,BalanceDelta,bytes calldata) returns (bytes4,BalanceDelta)"}},{"components":[{"expression":{"id":3125,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11736:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11740:6:22","memberName":"sender","nodeType":"MemberAccess","src":"11736:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3127,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"11748:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":3128,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"11753:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},{"id":3129,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"11761:5:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":3130,"name":"feesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"11768:11:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":3131,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"11781:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3132,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11735:55:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,BalanceDelta,BalanceDelta,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function IHooks.afterRemoveLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,BalanceDelta,BalanceDelta,bytes calldata) returns (bytes4,BalanceDelta)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,BalanceDelta,BalanceDelta,bytes calldata)"}],"expression":{"id":3121,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11662:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11666:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"11662:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11662:154:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":3136,"name":"AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"11861:41:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3134,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"11842:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11847:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"11842:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11842:61:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3119,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"11608:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11613:23:22","memberName":"callHookWithReturnDelta","nodeType":"MemberAccess","referencedDeclaration":2858,"src":"11608:28:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_int256_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory,bool) returns (int256)"}},"id":3138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11608:317:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":3117,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"11569:12:22","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"type(BalanceDelta)"}},"id":3118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11582:4:22","memberName":"wrap","nodeType":"MemberAccess","src":"11569:17:22","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int256) pure returns (BalanceDelta)"}},"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11569:374:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"11557:386:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3141,"nodeType":"ExpressionStatement","src":"11557:386:22"},{"expression":{"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3142,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"11961:11:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"function":6395,"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3143,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"11975:11:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3144,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"11989:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"11975:23:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"11961:37:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3147,"nodeType":"ExpressionStatement","src":"11961:37:22"}]}}]},"id":3151,"nodeType":"IfStatement","src":"10893:1130:22","trueBody":{"id":3111,"nodeType":"Block","src":"10924:542:22","statements":[{"condition":{"arguments":[{"id":3075,"name":"AFTER_ADD_LIQUIDITY_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2436,"src":"10961:24:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3073,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"10942:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10947:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"10942:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10942:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3110,"nodeType":"IfStatement","src":"10938:518:22","trueBody":{"id":3109,"nodeType":"Block","src":"10988:468:22","statements":[{"expression":{"id":3101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3077,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"11006:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":3084,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"11155:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":3085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11162:17:22","memberName":"afterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":1722,"src":"11155:24:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function IHooks.afterAddLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,BalanceDelta,BalanceDelta,bytes calldata) returns (bytes4,BalanceDelta)"}},{"components":[{"expression":{"id":3086,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11182:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11186:6:22","memberName":"sender","nodeType":"MemberAccess","src":"11182:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3088,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"11194:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":3089,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"11199:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams memory"}},{"id":3090,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"11207:5:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":3091,"name":"feesAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"11214:11:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":3092,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"11227:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3093,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11181:55:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,BalanceDelta,BalanceDelta,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_ModifyLiquidityParams_$6887_calldata_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function IHooks.afterAddLiquidity(address,struct PoolKey calldata,struct ModifyLiquidityParams calldata,BalanceDelta,BalanceDelta,bytes calldata) returns (bytes4,BalanceDelta)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_ModifyLiquidityParams_$6887_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct ModifyLiquidityParams memory,BalanceDelta,BalanceDelta,bytes calldata)"}],"expression":{"id":3082,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11111:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11115:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"11111:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11111:151:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":3097,"name":"AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"11307:38:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3095,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"11288:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11293:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"11288:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11288:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3080,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"11057:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11062:23:22","memberName":"callHookWithReturnDelta","nodeType":"MemberAccess","referencedDeclaration":2858,"src":"11057:28:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_int256_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory,bool) returns (int256)"}},"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11057:311:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":3078,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"11018:12:22","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"type(BalanceDelta)"}},"id":3079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11031:4:22","memberName":"wrap","nodeType":"MemberAccess","src":"11018:17:22","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int256) pure returns (BalanceDelta)"}},"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11018:368:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"11006:380:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3102,"nodeType":"ExpressionStatement","src":"11006:380:22"},{"expression":{"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3103,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"11404:11:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"function":6395,"id":3106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3104,"name":"callerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"11418:11:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3105,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"11432:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"11418:23:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"11404:37:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3108,"nodeType":"ExpressionStatement","src":"11404:37:22"}]}}]}}]},"documentation":{"id":3026,"nodeType":"StructuredDocumentation","src":"10380:86:22","text":"@notice calls afterModifyLiquidity hook if permissioned and validates return value"},"id":3153,"implemented":true,"kind":"function","modifiers":[],"name":"afterModifyLiquidity","nameLocation":"10480:20:22","nodeType":"FunctionDefinition","parameters":{"id":3044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3029,"mutability":"mutable","name":"self","nameLocation":"10517:4:22","nodeType":"VariableDeclaration","scope":3153,"src":"10510:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":3028,"nodeType":"UserDefinedTypeName","pathNode":{"id":3027,"name":"IHooks","nameLocations":["10510:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"10510:6:22"},"referencedDeclaration":1840,"src":"10510:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":3032,"mutability":"mutable","name":"key","nameLocation":"10546:3:22","nodeType":"VariableDeclaration","scope":3153,"src":"10531:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":3031,"nodeType":"UserDefinedTypeName","pathNode":{"id":3030,"name":"PoolKey","nameLocations":["10531:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"10531:7:22"},"referencedDeclaration":6871,"src":"10531:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"params","nameLocation":"10588:6:22","nodeType":"VariableDeclaration","scope":3153,"src":"10559:35:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_memory_ptr","typeString":"struct ModifyLiquidityParams"},"typeName":{"id":3034,"nodeType":"UserDefinedTypeName","pathNode":{"id":3033,"name":"ModifyLiquidityParams","nameLocations":["10559:21:22"],"nodeType":"IdentifierPath","referencedDeclaration":6887,"src":"10559:21:22"},"referencedDeclaration":6887,"src":"10559:21:22","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$6887_storage_ptr","typeString":"struct ModifyLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":3038,"mutability":"mutable","name":"delta","nameLocation":"10617:5:22","nodeType":"VariableDeclaration","scope":3153,"src":"10604:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3037,"nodeType":"UserDefinedTypeName","pathNode":{"id":3036,"name":"BalanceDelta","nameLocations":["10604:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"10604:12:22"},"referencedDeclaration":6311,"src":"10604:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":3041,"mutability":"mutable","name":"feesAccrued","nameLocation":"10645:11:22","nodeType":"VariableDeclaration","scope":3153,"src":"10632:24:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3040,"nodeType":"UserDefinedTypeName","pathNode":{"id":3039,"name":"BalanceDelta","nameLocations":["10632:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"10632:12:22"},"referencedDeclaration":6311,"src":"10632:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":3043,"mutability":"mutable","name":"hookData","nameLocation":"10681:8:22","nodeType":"VariableDeclaration","scope":3153,"src":"10666:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3042,"name":"bytes","nodeType":"ElementaryTypeName","src":"10666:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10500:195:22"},"returnParameters":{"id":3051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3047,"mutability":"mutable","name":"callerDelta","nameLocation":"10727:11:22","nodeType":"VariableDeclaration","scope":3153,"src":"10714:24:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3046,"nodeType":"UserDefinedTypeName","pathNode":{"id":3045,"name":"BalanceDelta","nameLocations":["10714:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"10714:12:22"},"referencedDeclaration":6311,"src":"10714:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":3050,"mutability":"mutable","name":"hookDelta","nameLocation":"10753:9:22","nodeType":"VariableDeclaration","scope":3153,"src":"10740:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3049,"nodeType":"UserDefinedTypeName","pathNode":{"id":3048,"name":"BalanceDelta","nameLocations":["10740:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"10740:12:22"},"referencedDeclaration":6311,"src":"10740:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"10713:50:22"},"scope":3530,"src":"10471:1558:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3293,"nodeType":"Block","src":"12329:1754:22","statements":[{"expression":{"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3175,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"12339:12:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3176,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"12354:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},"id":3177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12361:15:22","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":6894,"src":"12354:22:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12339:37:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3179,"nodeType":"ExpressionStatement","src":"12339:37:22"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3180,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12390:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12394:6:22","memberName":"sender","nodeType":"MemberAccess","src":"12390:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3184,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"12412:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":3183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12404:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3182,"name":"address","nodeType":"ElementaryTypeName","src":"12404:7:22","typeDescriptions":{}}},"id":3185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12404:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12390:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3193,"nodeType":"IfStatement","src":"12386:104:22","trueBody":{"expression":{"components":[{"id":3187,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"12427:12:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":3188,"name":"BeforeSwapDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6517,"src":"12441:22:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BeforeSwapDeltaLibrary_$6517_$","typeString":"type(library BeforeSwapDeltaLibrary)"}},"id":3189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12464:10:22","memberName":"ZERO_DELTA","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"12441:33:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},{"id":3190,"name":"lpFeeOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3173,"src":"12476:13:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"id":3191,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12426:64:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$_t_uint24_$","typeString":"tuple(int256,BeforeSwapDelta,uint24)"}},"functionReturnParameters":3174,"id":3192,"nodeType":"Return","src":"12419:71:22"}},{"condition":{"arguments":[{"id":3196,"name":"BEFORE_SWAP_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"12524:16:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3194,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"12505:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12510:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"12505:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12505:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3292,"nodeType":"IfStatement","src":"12501:1576:22","trueBody":{"id":3291,"nodeType":"Block","src":"12543:1534:22","statements":[{"assignments":[3199],"declarations":[{"constant":false,"id":3199,"mutability":"mutable","name":"result","nameLocation":"12570:6:22","nodeType":"VariableDeclaration","scope":3291,"src":"12557:19:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3198,"name":"bytes","nodeType":"ElementaryTypeName","src":"12557:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3214,"initialValue":{"arguments":[{"id":3201,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"12588:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},{"arguments":[{"expression":{"id":3204,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"12609:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":3205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12616:10:22","memberName":"beforeSwap","nodeType":"MemberAccess","referencedDeclaration":1784,"src":"12609:17:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_SwapParams_$6898_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$_t_uint24_$","typeString":"function IHooks.beforeSwap(address,struct PoolKey calldata,struct SwapParams calldata,bytes calldata) returns (bytes4,BeforeSwapDelta,uint24)"}},{"components":[{"expression":{"id":3206,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12629:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12633:6:22","memberName":"sender","nodeType":"MemberAccess","src":"12629:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3208,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"12641:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":3209,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"12646:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},{"id":3210,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"12654:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3211,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12628:35:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_SwapParams_$6898_memory_ptr_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct SwapParams memory,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_SwapParams_$6898_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$_t_uint24_$","typeString":"function IHooks.beforeSwap(address,struct PoolKey calldata,struct SwapParams calldata,bytes calldata) returns (bytes4,BeforeSwapDelta,uint24)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_SwapParams_$6898_memory_ptr_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct SwapParams memory,bytes calldata)"}],"expression":{"id":3202,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12594:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12598:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"12594:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12594:70:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3200,"name":"callHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"12579:8:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":3213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12579:86:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"12557:108:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3215,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"12783:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12790:6:22","memberName":"length","nodeType":"MemberAccess","src":"12783:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3936","id":3217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12800:2:22","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"12783:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3226,"nodeType":"IfStatement","src":"12779:66:22","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3219,"name":"InvalidHookResponse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2523,"src":"12804:19:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12824:8:22","memberName":"selector","nodeType":"MemberAccess","src":"12804:28:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12833:10:22","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"12804:39:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12804:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3225,"nodeType":"ExpressionStatement","src":"12804:41:22"}},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3227,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"13119:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},"id":3228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13123:3:22","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":6863,"src":"13119:7:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13127:12:22","memberName":"isDynamicFee","nodeType":"MemberAccess","referencedDeclaration":3575,"src":"13119:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13119:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3237,"nodeType":"IfStatement","src":"13115:61:22","trueBody":{"expression":{"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3231,"name":"lpFeeOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3173,"src":"13143:13:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"13159:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13166:8:22","memberName":"parseFee","nodeType":"MemberAccess","referencedDeclaration":7590,"src":"13159:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint24_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (uint24)"}},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13159:17:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"13143:33:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3236,"nodeType":"ExpressionStatement","src":"13143:33:22"}},{"condition":{"arguments":[{"id":3240,"name":"BEFORE_SWAP_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"13285:30:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3238,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"13266:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13271:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"13266:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13266:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3290,"nodeType":"IfStatement","src":"13262:805:22","trueBody":{"id":3289,"nodeType":"Block","src":"13318:749:22","statements":[{"expression":{"id":3249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3242,"name":"hookReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"13336:10:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3245,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"13370:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13377:16:22","memberName":"parseReturnDelta","nodeType":"MemberAccess","referencedDeclaration":7599,"src":"13370:23:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_int256_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (int256)"}},"id":3247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13370:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":3243,"name":"BeforeSwapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"13349:15:22","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$","typeString":"type(BeforeSwapDelta)"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13365:4:22","memberName":"wrap","nodeType":"MemberAccess","src":"13349:20:22","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$","typeString":"function (int256) pure returns (BeforeSwapDelta)"}},"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13349:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"src":"13336:60:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"id":3250,"nodeType":"ExpressionStatement","src":"13336:60:22"},{"assignments":[3252],"declarations":[{"constant":false,"id":3252,"mutability":"mutable","name":"hookDeltaSpecified","nameLocation":"13512:18:22","nodeType":"VariableDeclaration","scope":3289,"src":"13505:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":3251,"name":"int128","nodeType":"ElementaryTypeName","src":"13505:6:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":3256,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3253,"name":"hookReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"13533:10:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"id":3254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13544:17:22","memberName":"getSpecifiedDelta","nodeType":"MemberAccess","referencedDeclaration":6505,"src":"13533:28:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$","typeString":"function (BeforeSwapDelta) pure returns (int128)"}},"id":3255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13533:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"13505:58:22"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":3259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3257,"name":"hookDeltaSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"13725:18:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13747:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13725:23:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3288,"nodeType":"IfStatement","src":"13721:332:22","trueBody":{"id":3287,"nodeType":"Block","src":"13750:303:22","statements":[{"assignments":[3261],"declarations":[{"constant":false,"id":3261,"mutability":"mutable","name":"exactInput","nameLocation":"13777:10:22","nodeType":"VariableDeclaration","scope":3287,"src":"13772:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3260,"name":"bool","nodeType":"ElementaryTypeName","src":"13772:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3265,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3262,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"13790:12:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13805:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13790:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"13772:34:22"},{"expression":{"id":3268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3266,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"13828:12:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3267,"name":"hookDeltaSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"13844:18:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"13828:34:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3269,"nodeType":"ExpressionStatement","src":"13828:34:22"},{"condition":{"condition":{"id":3270,"name":"exactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3261,"src":"13888:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3274,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"13920:12:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13935:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13920:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13888:48:22","trueExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3271,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"13901:12:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13916:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13901:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3286,"nodeType":"IfStatement","src":"13884:151:22","trueBody":{"id":3285,"nodeType":"Block","src":"13938:97:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3278,"name":"HookDeltaExceedsSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2529,"src":"13964:26:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13991:8:22","memberName":"selector","nodeType":"MemberAccess","src":"13964:35:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14000:10:22","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"13964:46:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":3283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13964:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3284,"nodeType":"ExpressionStatement","src":"13964:48:22"}]}}]}}]}}]}}]},"documentation":{"id":3154,"nodeType":"StructuredDocumentation","src":"12035:76:22","text":"@notice calls beforeSwap hook if permissioned and validates return value"},"id":3294,"implemented":true,"kind":"function","modifiers":[],"name":"beforeSwap","nameLocation":"12125:10:22","nodeType":"FunctionDefinition","parameters":{"id":3166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3157,"mutability":"mutable","name":"self","nameLocation":"12143:4:22","nodeType":"VariableDeclaration","scope":3294,"src":"12136:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":3156,"nodeType":"UserDefinedTypeName","pathNode":{"id":3155,"name":"IHooks","nameLocations":["12136:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"12136:6:22"},"referencedDeclaration":1840,"src":"12136:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":3160,"mutability":"mutable","name":"key","nameLocation":"12164:3:22","nodeType":"VariableDeclaration","scope":3294,"src":"12149:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":3159,"nodeType":"UserDefinedTypeName","pathNode":{"id":3158,"name":"PoolKey","nameLocations":["12149:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"12149:7:22"},"referencedDeclaration":6871,"src":"12149:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":3163,"mutability":"mutable","name":"params","nameLocation":"12187:6:22","nodeType":"VariableDeclaration","scope":3294,"src":"12169:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams"},"typeName":{"id":3162,"nodeType":"UserDefinedTypeName","pathNode":{"id":3161,"name":"SwapParams","nameLocations":["12169:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":6898,"src":"12169:10:22"},"referencedDeclaration":6898,"src":"12169:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_storage_ptr","typeString":"struct SwapParams"}},"visibility":"internal"},{"constant":false,"id":3165,"mutability":"mutable","name":"hookData","nameLocation":"12210:8:22","nodeType":"VariableDeclaration","scope":3294,"src":"12195:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3164,"name":"bytes","nodeType":"ElementaryTypeName","src":"12195:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12135:84:22"},"returnParameters":{"id":3174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3168,"mutability":"mutable","name":"amountToSwap","nameLocation":"12261:12:22","nodeType":"VariableDeclaration","scope":3294,"src":"12254:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3167,"name":"int256","nodeType":"ElementaryTypeName","src":"12254:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3171,"mutability":"mutable","name":"hookReturn","nameLocation":"12291:10:22","nodeType":"VariableDeclaration","scope":3294,"src":"12275:26:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":3170,"nodeType":"UserDefinedTypeName","pathNode":{"id":3169,"name":"BeforeSwapDelta","nameLocations":["12275:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"12275:15:22"},"referencedDeclaration":6473,"src":"12275:15:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"internal"},{"constant":false,"id":3173,"mutability":"mutable","name":"lpFeeOverride","nameLocation":"12310:13:22","nodeType":"VariableDeclaration","scope":3294,"src":"12303:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3172,"name":"uint24","nodeType":"ElementaryTypeName","src":"12303:6:22","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"12253:71:22"},"scope":3530,"src":"12116:1967:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3419,"nodeType":"Block","src":"14434:1073:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3321,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14448:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14452:6:22","memberName":"sender","nodeType":"MemberAccess","src":"14448:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3325,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"14470:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":3324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14462:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3323,"name":"address","nodeType":"ElementaryTypeName","src":"14462:7:22","typeDescriptions":{}}},"id":3326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14462:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14448:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3333,"nodeType":"IfStatement","src":"14444:83:22","trueBody":{"expression":{"components":[{"id":3328,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"14485:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"expression":{"id":3329,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"14496:19:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalanceDeltaLibrary_$6469_$","typeString":"type(library BalanceDeltaLibrary)"}},"id":3330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14516:10:22","memberName":"ZERO_DELTA","nodeType":"MemberAccess","referencedDeclaration":6448,"src":"14496:30:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"id":3331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14484:43:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"functionReturnParameters":3320,"id":3332,"nodeType":"Return","src":"14477:50:22"}},{"assignments":[3335],"declarations":[{"constant":false,"id":3335,"mutability":"mutable","name":"hookDeltaSpecified","nameLocation":"14545:18:22","nodeType":"VariableDeclaration","scope":3419,"src":"14538:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":3334,"name":"int128","nodeType":"ElementaryTypeName","src":"14538:6:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":3339,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3336,"name":"beforeSwapHookReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3312,"src":"14566:20:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"id":3337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14587:17:22","memberName":"getSpecifiedDelta","nodeType":"MemberAccess","referencedDeclaration":6505,"src":"14566:38:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$","typeString":"function (BeforeSwapDelta) pure returns (int128)"}},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14566:40:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"14538:68:22"},{"assignments":[3341],"declarations":[{"constant":false,"id":3341,"mutability":"mutable","name":"hookDeltaUnspecified","nameLocation":"14623:20:22","nodeType":"VariableDeclaration","scope":3419,"src":"14616:27:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":3340,"name":"int128","nodeType":"ElementaryTypeName","src":"14616:6:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":3345,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3342,"name":"beforeSwapHookReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3312,"src":"14646:20:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14667:19:22","memberName":"getUnspecifiedDelta","nodeType":"MemberAccess","referencedDeclaration":6516,"src":"14646:40:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$","typeString":"function (BeforeSwapDelta) pure returns (int128)"}},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14646:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"14616:72:22"},{"condition":{"arguments":[{"id":3348,"name":"AFTER_SWAP_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"14722:15:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3346,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"14703:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14708:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"14703:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14703:35:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3375,"nodeType":"IfStatement","src":"14699:308:22","trueBody":{"id":3374,"nodeType":"Block","src":"14740:267:22","statements":[{"expression":{"id":3372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3350,"name":"hookDeltaUnspecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"14754:20:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"expression":{"id":3355,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"14839:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":3356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14846:9:22","memberName":"afterSwap","nodeType":"MemberAccess","referencedDeclaration":1805,"src":"14839:16:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_SwapParams_$6898_calldata_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_int128_$","typeString":"function IHooks.afterSwap(address,struct PoolKey calldata,struct SwapParams calldata,BalanceDelta,bytes calldata) returns (bytes4,int128)"}},{"components":[{"expression":{"id":3357,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14858:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14862:6:22","memberName":"sender","nodeType":"MemberAccess","src":"14858:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3359,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3301,"src":"14870:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":3360,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"14875:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},{"id":3361,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"14883:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":3362,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3309,"src":"14894:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3363,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14857:46:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_SwapParams_$6898_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct SwapParams memory,BalanceDelta,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_struct$_SwapParams_$6898_calldata_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$_t_int128_$","typeString":"function IHooks.afterSwap(address,struct PoolKey calldata,struct SwapParams calldata,BalanceDelta,bytes calldata) returns (bytes4,int128)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_struct$_SwapParams_$6898_memory_ptr_$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,struct SwapParams memory,BalanceDelta,bytes calldata)"}],"expression":{"id":3353,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14824:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14828:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"14824:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14824:80:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":3367,"name":"AFTER_SWAP_RETURNS_DELTA_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"14941:29:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3365,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"14922:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14927:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"14922:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14922:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3351,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"14778:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14783:23:22","memberName":"callHookWithReturnDelta","nodeType":"MemberAccess","referencedDeclaration":2858,"src":"14778:28:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_int256_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory,bool) returns (int256)"}},"id":3369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14778:207:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14986:8:22","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"14778:216:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":3371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14778:218:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"14754:242:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":3373,"nodeType":"ExpressionStatement","src":"14754:242:22"}]}},{"assignments":[3378],"declarations":[{"constant":false,"id":3378,"mutability":"mutable","name":"hookDelta","nameLocation":"15030:9:22","nodeType":"VariableDeclaration","scope":3419,"src":"15017:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3377,"nodeType":"UserDefinedTypeName","pathNode":{"id":3376,"name":"BalanceDelta","nameLocations":["15017:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"15017:12:22"},"referencedDeclaration":6311,"src":"15017:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"id":3379,"nodeType":"VariableDeclarationStatement","src":"15017:22:22"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":3382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3380,"name":"hookDeltaUnspecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"15053:20:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15077:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15053:25:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":3385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3383,"name":"hookDeltaSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3335,"src":"15082:18:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15104:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15082:23:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15053:52:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3414,"nodeType":"IfStatement","src":"15049:413:22","trueBody":{"id":3413,"nodeType":"Block","src":"15107:355:22","statements":[{"expression":{"id":3405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3387,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"15121:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3388,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"15134:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},"id":3389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15141:15:22","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":6894,"src":"15134:22:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15159:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15134:26:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3392,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"15164:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams memory"}},"id":3393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15171:10:22","memberName":"zeroForOne","nodeType":"MemberAccess","referencedDeclaration":6891,"src":"15164:17:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15134:47:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3395,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15133:49:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":3401,"name":"hookDeltaUnspecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"15291:20:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":3402,"name":"hookDeltaSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3335,"src":"15313:18:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":3400,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"15276:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":3403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15276:56:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15133:199:22","trueExpression":{"arguments":[{"id":3397,"name":"hookDeltaSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3335,"src":"15216:18:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":3398,"name":"hookDeltaUnspecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"15236:20:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":3396,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"15201:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15201:56:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"15121:211:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3406,"nodeType":"ExpressionStatement","src":"15121:211:22"},{"expression":{"id":3411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3407,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"15418:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"function":6395,"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3408,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"15430:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3409,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"15442:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"15430:21:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"15418:33:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":3412,"nodeType":"ExpressionStatement","src":"15418:33:22"}]}},{"expression":{"components":[{"id":3415,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"15479:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"id":3416,"name":"hookDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"15490:9:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"id":3417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15478:22:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"tuple(BalanceDelta,BalanceDelta)"}},"functionReturnParameters":3320,"id":3418,"nodeType":"Return","src":"15471:29:22"}]},"documentation":{"id":3295,"nodeType":"StructuredDocumentation","src":"14089:75:22","text":"@notice calls afterSwap hook if permissioned and validates return value"},"id":3420,"implemented":true,"kind":"function","modifiers":[],"name":"afterSwap","nameLocation":"14178:9:22","nodeType":"FunctionDefinition","parameters":{"id":3313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3298,"mutability":"mutable","name":"self","nameLocation":"14204:4:22","nodeType":"VariableDeclaration","scope":3420,"src":"14197:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":3297,"nodeType":"UserDefinedTypeName","pathNode":{"id":3296,"name":"IHooks","nameLocations":["14197:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"14197:6:22"},"referencedDeclaration":1840,"src":"14197:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":3301,"mutability":"mutable","name":"key","nameLocation":"14233:3:22","nodeType":"VariableDeclaration","scope":3420,"src":"14218:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":3300,"nodeType":"UserDefinedTypeName","pathNode":{"id":3299,"name":"PoolKey","nameLocations":["14218:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"14218:7:22"},"referencedDeclaration":6871,"src":"14218:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":3304,"mutability":"mutable","name":"params","nameLocation":"14264:6:22","nodeType":"VariableDeclaration","scope":3420,"src":"14246:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_memory_ptr","typeString":"struct SwapParams"},"typeName":{"id":3303,"nodeType":"UserDefinedTypeName","pathNode":{"id":3302,"name":"SwapParams","nameLocations":["14246:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":6898,"src":"14246:10:22"},"referencedDeclaration":6898,"src":"14246:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$6898_storage_ptr","typeString":"struct SwapParams"}},"visibility":"internal"},{"constant":false,"id":3307,"mutability":"mutable","name":"swapDelta","nameLocation":"14293:9:22","nodeType":"VariableDeclaration","scope":3420,"src":"14280:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3306,"nodeType":"UserDefinedTypeName","pathNode":{"id":3305,"name":"BalanceDelta","nameLocations":["14280:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"14280:12:22"},"referencedDeclaration":6311,"src":"14280:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":3309,"mutability":"mutable","name":"hookData","nameLocation":"14327:8:22","nodeType":"VariableDeclaration","scope":3420,"src":"14312:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3308,"name":"bytes","nodeType":"ElementaryTypeName","src":"14312:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3312,"mutability":"mutable","name":"beforeSwapHookReturn","nameLocation":"14361:20:22","nodeType":"VariableDeclaration","scope":3420,"src":"14345:36:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":3311,"nodeType":"UserDefinedTypeName","pathNode":{"id":3310,"name":"BeforeSwapDelta","nameLocations":["14345:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"14345:15:22"},"referencedDeclaration":6473,"src":"14345:15:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"internal"}],"src":"14187:200:22"},"returnParameters":{"id":3320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3420,"src":"14406:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3315,"nodeType":"UserDefinedTypeName","pathNode":{"id":3314,"name":"BalanceDelta","nameLocations":["14406:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"14406:12:22"},"referencedDeclaration":6311,"src":"14406:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":3319,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3420,"src":"14420:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":3318,"nodeType":"UserDefinedTypeName","pathNode":{"id":3317,"name":"BalanceDelta","nameLocations":["14420:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"14420:12:22"},"referencedDeclaration":6311,"src":"14420:12:22","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"14405:28:22"},"scope":3530,"src":"14169:1338:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3462,"nodeType":"Block","src":"15756:182:22","statements":[{"condition":{"arguments":[{"id":3441,"name":"BEFORE_DONATE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"15789:18:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3439,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3424,"src":"15770:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15775:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"15770:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15770:38:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3461,"nodeType":"IfStatement","src":"15766:166:22","trueBody":{"id":3460,"nodeType":"Block","src":"15810:122:22","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":3448,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"15853:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":3449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15860:12:22","memberName":"beforeDonate","nodeType":"MemberAccess","referencedDeclaration":1822,"src":"15853:19:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.beforeDonate(address,struct PoolKey calldata,uint256,uint256,bytes calldata) returns (bytes4)"}},{"components":[{"expression":{"id":3450,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15875:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15879:6:22","memberName":"sender","nodeType":"MemberAccess","src":"15875:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3452,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3427,"src":"15887:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":3453,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"15892:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3454,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"15901:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3455,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"15910:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15874:45:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,uint256,uint256,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.beforeDonate(address,struct PoolKey calldata,uint256,uint256,bytes calldata) returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,uint256,uint256,bytes calldata)"}],"expression":{"id":3446,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15838:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15842:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"15838:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15838:82:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3443,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3424,"src":"15824:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15829:8:22","memberName":"callHook","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"15824:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15824:97:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3459,"nodeType":"ExpressionStatement","src":"15824:97:22"}]}}]},"documentation":{"id":3421,"nodeType":"StructuredDocumentation","src":"15513:78:22","text":"@notice calls beforeDonate hook if permissioned and validates return value"},"id":3463,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3436,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3424,"src":"15746:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"id":3437,"kind":"modifierInvocation","modifierName":{"id":3435,"name":"noSelfCall","nameLocations":["15735:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2875,"src":"15735:10:22"},"nodeType":"ModifierInvocation","src":"15735:16:22"}],"name":"beforeDonate","nameLocation":"15605:12:22","nodeType":"FunctionDefinition","parameters":{"id":3434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3424,"mutability":"mutable","name":"self","nameLocation":"15625:4:22","nodeType":"VariableDeclaration","scope":3463,"src":"15618:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":3423,"nodeType":"UserDefinedTypeName","pathNode":{"id":3422,"name":"IHooks","nameLocations":["15618:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"15618:6:22"},"referencedDeclaration":1840,"src":"15618:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":3427,"mutability":"mutable","name":"key","nameLocation":"15646:3:22","nodeType":"VariableDeclaration","scope":3463,"src":"15631:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":3426,"nodeType":"UserDefinedTypeName","pathNode":{"id":3425,"name":"PoolKey","nameLocations":["15631:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"15631:7:22"},"referencedDeclaration":6871,"src":"15631:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":3429,"mutability":"mutable","name":"amount0","nameLocation":"15659:7:22","nodeType":"VariableDeclaration","scope":3463,"src":"15651:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3428,"name":"uint256","nodeType":"ElementaryTypeName","src":"15651:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3431,"mutability":"mutable","name":"amount1","nameLocation":"15676:7:22","nodeType":"VariableDeclaration","scope":3463,"src":"15668:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3430,"name":"uint256","nodeType":"ElementaryTypeName","src":"15668:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3433,"mutability":"mutable","name":"hookData","nameLocation":"15700:8:22","nodeType":"VariableDeclaration","scope":3463,"src":"15685:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3432,"name":"bytes","nodeType":"ElementaryTypeName","src":"15685:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15617:92:22"},"returnParameters":{"id":3438,"nodeType":"ParameterList","parameters":[],"src":"15756:0:22"},"scope":3530,"src":"15596:342:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3505,"nodeType":"Block","src":"16185:180:22","statements":[{"condition":{"arguments":[{"id":3484,"name":"AFTER_DONATE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"16218:17:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3482,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"16199:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16204:13:22","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":3529,"src":"16199:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IHooks_$1840_$_t_uint160_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,uint160) pure returns (bool)"}},"id":3485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16199:37:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3504,"nodeType":"IfStatement","src":"16195:164:22","trueBody":{"id":3503,"nodeType":"Block","src":"16238:121:22","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":3491,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"16281:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1840_$","typeString":"type(contract IHooks)"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16288:11:22","memberName":"afterDonate","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"16281:18:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.afterDonate(address,struct PoolKey calldata,uint256,uint256,bytes calldata) returns (bytes4)"}},{"components":[{"expression":{"id":3493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16302:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16306:6:22","memberName":"sender","nodeType":"MemberAccess","src":"16302:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3495,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"16314:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey memory"}},{"id":3496,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3472,"src":"16319:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3497,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"16328:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3498,"name":"hookData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3476,"src":"16337:8:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16301:45:22","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,uint256,uint256,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$6871_calldata_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IHooks.afterDonate(address,struct PoolKey calldata,uint256,uint256,bytes calldata) returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_PoolKey_$6871_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,struct PoolKey memory,uint256,uint256,bytes calldata)"}],"expression":{"id":3489,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16266:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16270:10:22","memberName":"encodeCall","nodeType":"MemberAccess","src":"16266:14:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16266:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3486,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"16252:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"id":3488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16257:8:22","memberName":"callHook","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"16252:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IHooks_$1840_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IHooks_$1840_$","typeString":"function (contract IHooks,bytes memory) returns (bytes memory)"}},"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16252:96:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3502,"nodeType":"ExpressionStatement","src":"16252:96:22"}]}}]},"documentation":{"id":3464,"nodeType":"StructuredDocumentation","src":"15944:77:22","text":"@notice calls afterDonate hook if permissioned and validates return value"},"id":3506,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3479,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"16175:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"id":3480,"kind":"modifierInvocation","modifierName":{"id":3478,"name":"noSelfCall","nameLocations":["16164:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2875,"src":"16164:10:22"},"nodeType":"ModifierInvocation","src":"16164:16:22"}],"name":"afterDonate","nameLocation":"16035:11:22","nodeType":"FunctionDefinition","parameters":{"id":3477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3467,"mutability":"mutable","name":"self","nameLocation":"16054:4:22","nodeType":"VariableDeclaration","scope":3506,"src":"16047:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":3466,"nodeType":"UserDefinedTypeName","pathNode":{"id":3465,"name":"IHooks","nameLocations":["16047:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"16047:6:22"},"referencedDeclaration":1840,"src":"16047:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":3470,"mutability":"mutable","name":"key","nameLocation":"16075:3:22","nodeType":"VariableDeclaration","scope":3506,"src":"16060:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":3469,"nodeType":"UserDefinedTypeName","pathNode":{"id":3468,"name":"PoolKey","nameLocations":["16060:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"16060:7:22"},"referencedDeclaration":6871,"src":"16060:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"},{"constant":false,"id":3472,"mutability":"mutable","name":"amount0","nameLocation":"16088:7:22","nodeType":"VariableDeclaration","scope":3506,"src":"16080:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3471,"name":"uint256","nodeType":"ElementaryTypeName","src":"16080:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3474,"mutability":"mutable","name":"amount1","nameLocation":"16105:7:22","nodeType":"VariableDeclaration","scope":3506,"src":"16097:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3473,"name":"uint256","nodeType":"ElementaryTypeName","src":"16097:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3476,"mutability":"mutable","name":"hookData","nameLocation":"16129:8:22","nodeType":"VariableDeclaration","scope":3506,"src":"16114:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3475,"name":"bytes","nodeType":"ElementaryTypeName","src":"16114:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16046:92:22"},"returnParameters":{"id":3481,"nodeType":"ParameterList","parameters":[],"src":"16185:0:22"},"scope":3530,"src":"16026:339:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3528,"nodeType":"Block","src":"16450:58:22","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3520,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3509,"src":"16483:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}],"id":3519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16475:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3518,"name":"address","nodeType":"ElementaryTypeName","src":"16475:7:22","typeDescriptions":{}}},"id":3521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16475:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16467:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3516,"name":"uint160","nodeType":"ElementaryTypeName","src":"16467:7:22","typeDescriptions":{}}},"id":3522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16467:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3523,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"16492:4:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"16467:29:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16500:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16467:34:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3515,"id":3527,"nodeType":"Return","src":"16460:41:22"}]},"id":3529,"implemented":true,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"16380:13:22","nodeType":"FunctionDefinition","parameters":{"id":3512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3509,"mutability":"mutable","name":"self","nameLocation":"16401:4:22","nodeType":"VariableDeclaration","scope":3529,"src":"16394:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":3508,"nodeType":"UserDefinedTypeName","pathNode":{"id":3507,"name":"IHooks","nameLocations":["16394:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"16394:6:22"},"referencedDeclaration":1840,"src":"16394:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"},{"constant":false,"id":3511,"mutability":"mutable","name":"flag","nameLocation":"16415:4:22","nodeType":"VariableDeclaration","scope":3529,"src":"16407:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3510,"name":"uint160","nodeType":"ElementaryTypeName","src":"16407:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16393:27:22"},"returnParameters":{"id":3515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3529,"src":"16444:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3513,"name":"bool","nodeType":"ElementaryTypeName","src":"16444:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16443:6:22"},"scope":3530,"src":"16371:137:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3531,"src":"1039:15471:22","usedErrors":[2520,2523,2526,2529],"usedEvents":[]}],"src":"32:16479:22"},"id":22},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LPFeeLibrary.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LPFeeLibrary.sol","exportedSymbols":{"CustomRevert":[2358],"LPFeeLibrary":[3679]},"id":3680,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3532,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:23"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./CustomRevert.sol","id":3534,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3680,"sourceUnit":2359,"src":"57:48:23","symbolAliases":[{"foreign":{"id":3533,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"65:12:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"LPFeeLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":3535,"nodeType":"StructuredDocumentation","src":"107:59:23","text":"@notice Library of helper functions for a pools LP fee"},"fullyImplemented":true,"id":3679,"linearizedBaseContracts":[3679],"name":"LPFeeLibrary","nameLocation":"174:12:23","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3538,"libraryName":{"id":3536,"name":"LPFeeLibrary","nameLocations":["199:12:23"],"nodeType":"IdentifierPath","referencedDeclaration":3679,"src":"199:12:23"},"nodeType":"UsingForDirective","src":"193:30:23","typeName":{"id":3537,"name":"uint24","nodeType":"ElementaryTypeName","src":"216:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}},{"global":false,"id":3541,"libraryName":{"id":3539,"name":"CustomRevert","nameLocations":["234:12:23"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"234:12:23"},"nodeType":"UsingForDirective","src":"228:30:23","typeName":{"id":3540,"name":"bytes4","nodeType":"ElementaryTypeName","src":"251:6:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"documentation":{"id":3542,"nodeType":"StructuredDocumentation","src":"264:73:23","text":"@notice Thrown when the static or dynamic fee on a pool exceeds 100%."},"errorSelector":"14002113","id":3546,"name":"LPFeeTooLarge","nameLocation":"348:13:23","nodeType":"ErrorDefinition","parameters":{"id":3545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3544,"mutability":"mutable","name":"fee","nameLocation":"369:3:23","nodeType":"VariableDeclaration","scope":3546,"src":"362:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3543,"name":"uint24","nodeType":"ElementaryTypeName","src":"362:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"361:12:23"},"src":"342:32:23"},{"constant":true,"documentation":{"id":3547,"nodeType":"StructuredDocumentation","src":"380:125:23","text":"@notice An lp fee of exactly 0b1000000... signals a dynamic fee pool. This isn't a valid static fee as it is > MAX_LP_FEE"},"functionSelector":"f26ef49d","id":3550,"mutability":"constant","name":"DYNAMIC_FEE_FLAG","nameLocation":"533:16:23","nodeType":"VariableDeclaration","scope":3679,"src":"510:50:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3548,"name":"uint24","nodeType":"ElementaryTypeName","src":"510:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"value":{"hexValue":"3078383030303030","id":3549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"552:8:23","typeDescriptions":{"typeIdentifier":"t_rational_8388608_by_1","typeString":"int_const 8388608"},"value":"0x800000"},"visibility":"public"},{"constant":true,"documentation":{"id":3551,"nodeType":"StructuredDocumentation","src":"567:133:23","text":"@notice the second bit of the fee returned by beforeSwap is used to signal if the stored LP fee should be overridden in this swap"},"functionSelector":"3b01d64d","id":3554,"mutability":"constant","name":"OVERRIDE_FEE_FLAG","nameLocation":"799:17:23","nodeType":"VariableDeclaration","scope":3679,"src":"776:51:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3552,"name":"uint24","nodeType":"ElementaryTypeName","src":"776:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"value":{"hexValue":"3078343030303030","id":3553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"819:8:23","typeDescriptions":{"typeIdentifier":"t_rational_4194304_by_1","typeString":"int_const 4194304"},"value":"0x400000"},"visibility":"public"},{"constant":true,"documentation":{"id":3555,"nodeType":"StructuredDocumentation","src":"834:90:23","text":"@notice mask to remove the override fee flag from a fee returned by the beforeSwaphook"},"functionSelector":"6f95ebcf","id":3558,"mutability":"constant","name":"REMOVE_OVERRIDE_MASK","nameLocation":"952:20:23","nodeType":"VariableDeclaration","scope":3679,"src":"929:54:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3556,"name":"uint24","nodeType":"ElementaryTypeName","src":"929:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"value":{"hexValue":"3078424646464646","id":3557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"975:8:23","typeDescriptions":{"typeIdentifier":"t_rational_12582911_by_1","typeString":"int_const 12582911"},"value":"0xBFFFFF"},"visibility":"public"},{"constant":true,"documentation":{"id":3559,"nodeType":"StructuredDocumentation","src":"990:80:23","text":"@notice the lp fee is represented in hundredths of a bip, so the max is 100%"},"functionSelector":"3fc48eba","id":3562,"mutability":"constant","name":"MAX_LP_FEE","nameLocation":"1098:10:23","nodeType":"VariableDeclaration","scope":3679,"src":"1075:43:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3560,"name":"uint24","nodeType":"ElementaryTypeName","src":"1075:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"value":{"hexValue":"31303030303030","id":3561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1111:7:23","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1000000"},"visibility":"public"},{"body":{"id":3574,"nodeType":"Block","src":"1362:48:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":3572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3570,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3565,"src":"1379:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3571,"name":"DYNAMIC_FEE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"1387:16:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"1379:24:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3569,"id":3573,"nodeType":"Return","src":"1372:31:23"}]},"documentation":{"id":3563,"nodeType":"StructuredDocumentation","src":"1125:168:23","text":"@notice returns true if a pool's LP fee signals that the pool has a dynamic fee\n @param self The fee to check\n @return bool True of the fee is dynamic"},"id":3575,"implemented":true,"kind":"function","modifiers":[],"name":"isDynamicFee","nameLocation":"1307:12:23","nodeType":"FunctionDefinition","parameters":{"id":3566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3565,"mutability":"mutable","name":"self","nameLocation":"1327:4:23","nodeType":"VariableDeclaration","scope":3575,"src":"1320:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3564,"name":"uint24","nodeType":"ElementaryTypeName","src":"1320:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1319:13:23"},"returnParameters":{"id":3569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3575,"src":"1356:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3567,"name":"bool","nodeType":"ElementaryTypeName","src":"1356:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1355:6:23"},"scope":3679,"src":"1298:112:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3587,"nodeType":"Block","src":"1650:42:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3583,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3578,"src":"1667:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3584,"name":"MAX_LP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"1675:10:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"1667:18:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3582,"id":3586,"nodeType":"Return","src":"1660:25:23"}]},"documentation":{"id":3576,"nodeType":"StructuredDocumentation","src":"1416:170:23","text":"@notice returns true if an LP fee is valid, aka not above the maximum permitted fee\n @param self The fee to check\n @return bool True of the fee is valid"},"id":3588,"implemented":true,"kind":"function","modifiers":[],"name":"isValid","nameLocation":"1600:7:23","nodeType":"FunctionDefinition","parameters":{"id":3579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3578,"mutability":"mutable","name":"self","nameLocation":"1615:4:23","nodeType":"VariableDeclaration","scope":3588,"src":"1608:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3577,"name":"uint24","nodeType":"ElementaryTypeName","src":"1608:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1607:13:23"},"returnParameters":{"id":3582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3588,"src":"1644:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3580,"name":"bool","nodeType":"ElementaryTypeName","src":"1644:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1643:6:23"},"scope":3679,"src":"1591:101:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3607,"nodeType":"Block","src":"1878:77:23","statements":[{"condition":{"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1892:15:23","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3594,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1893:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1898:7:23","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"1893:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":3596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1893:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3606,"nodeType":"IfStatement","src":"1888:60:23","trueBody":{"expression":{"arguments":[{"id":3603,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1943:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"expression":{"id":3598,"name":"LPFeeTooLarge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"1909:13:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint24_$returns$_t_error_$","typeString":"function (uint24) pure returns (error)"}},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1923:8:23","memberName":"selector","nodeType":"MemberAccess","src":"1909:22:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1932:10:23","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2304,"src":"1909:33:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_uint160_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,uint160) pure"}},"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:39:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3605,"nodeType":"ExpressionStatement","src":"1909:39:23"}}]},"documentation":{"id":3589,"nodeType":"StructuredDocumentation","src":"1698:130:23","text":"@notice validates whether an LP fee is larger than the maximum, and reverts if invalid\n @param self The fee to validate"},"id":3608,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1842:8:23","nodeType":"FunctionDefinition","parameters":{"id":3592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3591,"mutability":"mutable","name":"self","nameLocation":"1858:4:23","nodeType":"VariableDeclaration","scope":3608,"src":"1851:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3590,"name":"uint24","nodeType":"ElementaryTypeName","src":"1851:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1850:13:23"},"returnParameters":{"id":3593,"nodeType":"ParameterList","parameters":[],"src":"1878:0:23"},"scope":3679,"src":"1833:122:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3629,"nodeType":"Block","src":"2402:151:23","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3616,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"2471:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2476:12:23","memberName":"isDynamicFee","nodeType":"MemberAccess","referencedDeclaration":3575,"src":"2471:17:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":3618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2471:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3621,"nodeType":"IfStatement","src":"2467:33:23","trueBody":{"expression":{"hexValue":"30","id":3619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2499:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3615,"id":3620,"nodeType":"Return","src":"2492:8:23"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3622,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"2510:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2515:8:23","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":3608,"src":"2510:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$__$attached_to$_t_uint24_$","typeString":"function (uint24) pure"}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2510:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3626,"nodeType":"ExpressionStatement","src":"2510:15:23"},{"expression":{"id":3627,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"2542:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":3615,"id":3628,"nodeType":"Return","src":"2535:11:23"}]},"documentation":{"id":3609,"nodeType":"StructuredDocumentation","src":"1961:367:23","text":"@notice gets and validates the initial LP fee for a pool. Dynamic fee pools have an initial fee of 0.\n @dev if a dynamic fee pool wants a non-0 initial fee, it should call `updateDynamicLPFee` in the afterInitialize hook\n @param self The fee to get the initial LP from\n @return initialFee 0 if the fee is dynamic, otherwise the fee (if valid)"},"id":3630,"implemented":true,"kind":"function","modifiers":[],"name":"getInitialLPFee","nameLocation":"2342:15:23","nodeType":"FunctionDefinition","parameters":{"id":3612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3611,"mutability":"mutable","name":"self","nameLocation":"2365:4:23","nodeType":"VariableDeclaration","scope":3630,"src":"2358:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3610,"name":"uint24","nodeType":"ElementaryTypeName","src":"2358:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2357:13:23"},"returnParameters":{"id":3615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3630,"src":"2394:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3613,"name":"uint24","nodeType":"ElementaryTypeName","src":"2394:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2393:8:23"},"scope":3679,"src":"2333:220:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3644,"nodeType":"Block","src":"2819:53:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":3642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":3640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3638,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"2836:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3639,"name":"OVERRIDE_FEE_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"2843:17:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"2836:24:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2864:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2836:29:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3637,"id":3643,"nodeType":"Return","src":"2829:36:23"}]},"documentation":{"id":3631,"nodeType":"StructuredDocumentation","src":"2559:193:23","text":"@notice returns true if the fee has the override flag set (2nd highest bit of the uint24)\n @param self The fee to check\n @return bool True of the fee has the override flag set"},"id":3645,"implemented":true,"kind":"function","modifiers":[],"name":"isOverride","nameLocation":"2766:10:23","nodeType":"FunctionDefinition","parameters":{"id":3634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3633,"mutability":"mutable","name":"self","nameLocation":"2784:4:23","nodeType":"VariableDeclaration","scope":3645,"src":"2777:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3632,"name":"uint24","nodeType":"ElementaryTypeName","src":"2777:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2776:13:23"},"returnParameters":{"id":3637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3645,"src":"2813:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3635,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2812:6:23"},"scope":3679,"src":"2757:115:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3657,"nodeType":"Block","src":"3130:51:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3653,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3648,"src":"3147:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3654,"name":"REMOVE_OVERRIDE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3558,"src":"3154:20:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"3147:27:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":3652,"id":3656,"nodeType":"Return","src":"3140:34:23"}]},"documentation":{"id":3646,"nodeType":"StructuredDocumentation","src":"2878:175:23","text":"@notice returns a fee with the override flag removed\n @param self The fee to remove the override flag from\n @return fee The fee without the override flag set"},"id":3658,"implemented":true,"kind":"function","modifiers":[],"name":"removeOverrideFlag","nameLocation":"3067:18:23","nodeType":"FunctionDefinition","parameters":{"id":3649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3648,"mutability":"mutable","name":"self","nameLocation":"3093:4:23","nodeType":"VariableDeclaration","scope":3658,"src":"3086:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3647,"name":"uint24","nodeType":"ElementaryTypeName","src":"3086:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3085:13:23"},"returnParameters":{"id":3652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3651,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3658,"src":"3122:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3650,"name":"uint24","nodeType":"ElementaryTypeName","src":"3122:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3121:8:23"},"scope":3679,"src":"3058:123:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3677,"nodeType":"Block","src":"3521:72:23","statements":[{"expression":{"id":3670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3666,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"3531:3:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3667,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"3537:4:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3542:18:23","memberName":"removeOverrideFlag","nodeType":"MemberAccess","referencedDeclaration":3658,"src":"3537:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_uint24_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (uint24)"}},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"3531:31:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3671,"nodeType":"ExpressionStatement","src":"3531:31:23"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3672,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"3572:3:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3576:8:23","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":3608,"src":"3572:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$__$attached_to$_t_uint24_$","typeString":"function (uint24) pure"}},"id":3675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3676,"nodeType":"ExpressionStatement","src":"3572:14:23"}]},"documentation":{"id":3659,"nodeType":"StructuredDocumentation","src":"3187:242:23","text":"@notice Removes the override flag and validates the fee (reverts if the fee is too large)\n @param self The fee to remove the override flag from, and then validate\n @return fee The fee without the override flag set (if valid)"},"id":3678,"implemented":true,"kind":"function","modifiers":[],"name":"removeOverrideFlagAndValidate","nameLocation":"3443:29:23","nodeType":"FunctionDefinition","parameters":{"id":3662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3661,"mutability":"mutable","name":"self","nameLocation":"3480:4:23","nodeType":"VariableDeclaration","scope":3678,"src":"3473:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3660,"name":"uint24","nodeType":"ElementaryTypeName","src":"3473:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3472:13:23"},"returnParameters":{"id":3665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3664,"mutability":"mutable","name":"fee","nameLocation":"3516:3:23","nodeType":"VariableDeclaration","scope":3678,"src":"3509:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3663,"name":"uint24","nodeType":"ElementaryTypeName","src":"3509:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3508:12:23"},"scope":3679,"src":"3434:159:23","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3680,"src":"166:3429:23","usedErrors":[3546],"usedEvents":[]}],"src":"32:3564:23"},"id":23},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LiquidityMath.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LiquidityMath.sol","exportedSymbols":{"LiquidityMath":[7623]},"id":7624,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7609,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:24"},{"abstract":false,"baseContracts":[],"canonicalName":"LiquidityMath","contractDependencies":[],"contractKind":"library","documentation":{"id":7610,"nodeType":"StructuredDocumentation","src":"57:38:24","text":"@title Math library for liquidity"},"fullyImplemented":true,"id":7623,"linearizedBaseContracts":[7623],"name":"LiquidityMath","nameLocation":"103:13:24","nodeType":"ContractDefinition","nodes":[{"body":{"id":7621,"nodeType":"Block","src":"442:297:24","statements":[{"AST":{"nativeSrc":"477:256:24","nodeType":"YulBlock","src":"477:256:24","statements":[{"nativeSrc":"491:71:24","nodeType":"YulAssignment","src":"491:71:24","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"504:1:24","nodeType":"YulIdentifier","src":"504:1:24"},{"kind":"number","nativeSrc":"507:34:24","nodeType":"YulLiteral","src":"507:34:24","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"500:3:24","nodeType":"YulIdentifier","src":"500:3:24"},"nativeSrc":"500:42:24","nodeType":"YulFunctionCall","src":"500:42:24"},{"arguments":[{"kind":"number","nativeSrc":"555:2:24","nodeType":"YulLiteral","src":"555:2:24","type":"","value":"15"},{"name":"y","nativeSrc":"559:1:24","nodeType":"YulIdentifier","src":"559:1:24"}],"functionName":{"name":"signextend","nativeSrc":"544:10:24","nodeType":"YulIdentifier","src":"544:10:24"},"nativeSrc":"544:17:24","nodeType":"YulFunctionCall","src":"544:17:24"}],"functionName":{"name":"add","nativeSrc":"496:3:24","nodeType":"YulIdentifier","src":"496:3:24"},"nativeSrc":"496:66:24","nodeType":"YulFunctionCall","src":"496:66:24"},"variableNames":[{"name":"z","nativeSrc":"491:1:24","nodeType":"YulIdentifier","src":"491:1:24"}]},{"body":{"nativeSrc":"590:133:24","nodeType":"YulBlock","src":"590:133:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"660:1:24","nodeType":"YulLiteral","src":"660:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"663:10:24","nodeType":"YulLiteral","src":"663:10:24","type":"","value":"0x93dafdf1"}],"functionName":{"name":"mstore","nativeSrc":"653:6:24","nodeType":"YulIdentifier","src":"653:6:24"},"nativeSrc":"653:21:24","nodeType":"YulFunctionCall","src":"653:21:24"},"nativeSrc":"653:21:24","nodeType":"YulExpressionStatement","src":"653:21:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"698:4:24","nodeType":"YulLiteral","src":"698:4:24","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"704:4:24","nodeType":"YulLiteral","src":"704:4:24","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"691:6:24","nodeType":"YulIdentifier","src":"691:6:24"},"nativeSrc":"691:18:24","nodeType":"YulFunctionCall","src":"691:18:24"},"nativeSrc":"691:18:24","nodeType":"YulExpressionStatement","src":"691:18:24"}]},"condition":{"arguments":[{"kind":"number","nativeSrc":"582:3:24","nodeType":"YulLiteral","src":"582:3:24","type":"","value":"128"},{"name":"z","nativeSrc":"587:1:24","nodeType":"YulIdentifier","src":"587:1:24"}],"functionName":{"name":"shr","nativeSrc":"578:3:24","nodeType":"YulIdentifier","src":"578:3:24"},"nativeSrc":"578:11:24","nodeType":"YulFunctionCall","src":"578:11:24"},"nativeSrc":"575:148:24","nodeType":"YulIf","src":"575:148:24"}]},"evmVersion":"cancun","externalReferences":[{"declaration":7613,"isOffset":false,"isSlot":false,"src":"504:1:24","valueSize":1},{"declaration":7615,"isOffset":false,"isSlot":false,"src":"559:1:24","valueSize":1},{"declaration":7618,"isOffset":false,"isSlot":false,"src":"491:1:24","valueSize":1},{"declaration":7618,"isOffset":false,"isSlot":false,"src":"587:1:24","valueSize":1}],"flags":["memory-safe"],"id":7620,"nodeType":"InlineAssembly","src":"452:281:24"}]},"documentation":{"id":7611,"nodeType":"StructuredDocumentation","src":"123:241:24","text":"@notice Add a signed liquidity delta to liquidity and revert if it overflows or underflows\n @param x The liquidity before change\n @param y The delta by which liquidity should be changed\n @return z The liquidity delta"},"id":7622,"implemented":true,"kind":"function","modifiers":[],"name":"addDelta","nameLocation":"378:8:24","nodeType":"FunctionDefinition","parameters":{"id":7616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7613,"mutability":"mutable","name":"x","nameLocation":"395:1:24","nodeType":"VariableDeclaration","scope":7622,"src":"387:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7612,"name":"uint128","nodeType":"ElementaryTypeName","src":"387:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":7615,"mutability":"mutable","name":"y","nameLocation":"405:1:24","nodeType":"VariableDeclaration","scope":7622,"src":"398:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":7614,"name":"int128","nodeType":"ElementaryTypeName","src":"398:6:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"386:21:24"},"returnParameters":{"id":7619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7618,"mutability":"mutable","name":"z","nameLocation":"439:1:24","nodeType":"VariableDeclaration","scope":7622,"src":"431:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7617,"name":"uint128","nodeType":"ElementaryTypeName","src":"431:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"430:11:24"},"scope":7623,"src":"369:370:24","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7624,"src":"95:646:24","usedErrors":[],"usedEvents":[]}],"src":"32:710:24"},"id":24},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Lock.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Lock.sol","exportedSymbols":{"Lock":[3703]},"id":3704,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":3681,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"37:24:25"},{"abstract":false,"baseContracts":[],"canonicalName":"Lock","contractDependencies":[],"contractKind":"library","documentation":{"id":3682,"nodeType":"StructuredDocumentation","src":"63:189:25","text":"@notice This is a temporary library that allows us to use transient storage (tstore/tload)\n TODO: This library can be deleted when we have the transient keyword support in solidity."},"fullyImplemented":true,"id":3703,"linearizedBaseContracts":[3703],"name":"Lock","nameLocation":"260:4:25","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3685,"mutability":"constant","name":"IS_UNLOCKED_SLOT","nameLocation":"398:16:25","nodeType":"VariableDeclaration","scope":3703,"src":"372:111:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3683,"name":"bytes32","nodeType":"ElementaryTypeName","src":"372:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863303930666334363833363234636663333838346539643864653565636131333266326430656330363261666637356434336330343635643563656561623233","id":3684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"417:66:25","typeDescriptions":{"typeIdentifier":"t_rational_87100234046427240614499661373387320107015461065347489303548037305558901893923_by_1","typeString":"int_const 8710...(69 digits omitted)...3923"},"value":"0xc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab23"},"visibility":"internal"},{"body":{"id":3689,"nodeType":"Block","src":"517:117:25","statements":[{"AST":{"nativeSrc":"552:76:25","nodeType":"YulBlock","src":"552:76:25","statements":[{"expression":{"arguments":[{"name":"IS_UNLOCKED_SLOT","nativeSrc":"595:16:25","nodeType":"YulIdentifier","src":"595:16:25"},{"kind":"bool","nativeSrc":"613:4:25","nodeType":"YulLiteral","src":"613:4:25","type":"","value":"true"}],"functionName":{"name":"tstore","nativeSrc":"588:6:25","nodeType":"YulIdentifier","src":"588:6:25"},"nativeSrc":"588:30:25","nodeType":"YulFunctionCall","src":"588:30:25"},"nativeSrc":"588:30:25","nodeType":"YulExpressionStatement","src":"588:30:25"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3685,"isOffset":false,"isSlot":false,"src":"595:16:25","valueSize":1}],"flags":["memory-safe"],"id":3688,"nodeType":"InlineAssembly","src":"527:101:25"}]},"id":3690,"implemented":true,"kind":"function","modifiers":[],"name":"unlock","nameLocation":"499:6:25","nodeType":"FunctionDefinition","parameters":{"id":3686,"nodeType":"ParameterList","parameters":[],"src":"505:2:25"},"returnParameters":{"id":3687,"nodeType":"ParameterList","parameters":[],"src":"517:0:25"},"scope":3703,"src":"490:144:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3694,"nodeType":"Block","src":"665:96:25","statements":[{"AST":{"nativeSrc":"700:55:25","nodeType":"YulBlock","src":"700:55:25","statements":[{"expression":{"arguments":[{"name":"IS_UNLOCKED_SLOT","nativeSrc":"721:16:25","nodeType":"YulIdentifier","src":"721:16:25"},{"kind":"bool","nativeSrc":"739:5:25","nodeType":"YulLiteral","src":"739:5:25","type":"","value":"false"}],"functionName":{"name":"tstore","nativeSrc":"714:6:25","nodeType":"YulIdentifier","src":"714:6:25"},"nativeSrc":"714:31:25","nodeType":"YulFunctionCall","src":"714:31:25"},"nativeSrc":"714:31:25","nodeType":"YulExpressionStatement","src":"714:31:25"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3685,"isOffset":false,"isSlot":false,"src":"721:16:25","valueSize":1}],"flags":["memory-safe"],"id":3693,"nodeType":"InlineAssembly","src":"675:80:25"}]},"id":3695,"implemented":true,"kind":"function","modifiers":[],"name":"lock","nameLocation":"649:4:25","nodeType":"FunctionDefinition","parameters":{"id":3691,"nodeType":"ParameterList","parameters":[],"src":"653:2:25"},"returnParameters":{"id":3692,"nodeType":"ParameterList","parameters":[],"src":"665:0:25"},"scope":3703,"src":"640:121:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3701,"nodeType":"Block","src":"827:100:25","statements":[{"AST":{"nativeSrc":"862:59:25","nodeType":"YulBlock","src":"862:59:25","statements":[{"nativeSrc":"876:35:25","nodeType":"YulAssignment","src":"876:35:25","value":{"arguments":[{"name":"IS_UNLOCKED_SLOT","nativeSrc":"894:16:25","nodeType":"YulIdentifier","src":"894:16:25"}],"functionName":{"name":"tload","nativeSrc":"888:5:25","nodeType":"YulIdentifier","src":"888:5:25"},"nativeSrc":"888:23:25","nodeType":"YulFunctionCall","src":"888:23:25"},"variableNames":[{"name":"unlocked","nativeSrc":"876:8:25","nodeType":"YulIdentifier","src":"876:8:25"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3685,"isOffset":false,"isSlot":false,"src":"894:16:25","valueSize":1},{"declaration":3698,"isOffset":false,"isSlot":false,"src":"876:8:25","valueSize":1}],"flags":["memory-safe"],"id":3700,"nodeType":"InlineAssembly","src":"837:84:25"}]},"id":3702,"implemented":true,"kind":"function","modifiers":[],"name":"isUnlocked","nameLocation":"776:10:25","nodeType":"FunctionDefinition","parameters":{"id":3696,"nodeType":"ParameterList","parameters":[],"src":"786:2:25"},"returnParameters":{"id":3699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3698,"mutability":"mutable","name":"unlocked","nameLocation":"817:8:25","nodeType":"VariableDeclaration","scope":3702,"src":"812:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3697,"name":"bool","nodeType":"ElementaryTypeName","src":"812:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"811:15:25"},"scope":3703,"src":"767:160:25","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3704,"src":"252:677:25","usedErrors":[],"usedEvents":[]}],"src":"37:893:25"},"id":25},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/NonzeroDeltaCount.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/NonzeroDeltaCount.sol","exportedSymbols":{"NonzeroDeltaCount":[3728]},"id":3729,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":3705,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"37:24:26"},{"abstract":false,"baseContracts":[],"canonicalName":"NonzeroDeltaCount","contractDependencies":[],"contractKind":"library","documentation":{"id":3706,"nodeType":"StructuredDocumentation","src":"63:222:26","text":"@notice This is a temporary library that allows us to use transient storage (tstore/tload)\n for the nonzero delta count.\n TODO: This library can be deleted when we have the transient keyword support in solidity."},"fullyImplemented":true,"id":3728,"linearizedBaseContracts":[3728],"name":"NonzeroDeltaCount","nameLocation":"293:17:26","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3709,"mutability":"constant","name":"NONZERO_DELTA_COUNT_SLOT","nameLocation":"450:24:26","nodeType":"VariableDeclaration","scope":3728,"src":"424:127:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"424:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307837643462333136346336653435623937653764383762373132356134346335383238643030356166383866396437353163666437383732396335643939613062","id":3708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"485:66:26","typeDescriptions":{"typeIdentifier":"t_rational_56671960505278111519104690822132496699113179860588238901689140059013086026251_by_1","typeString":"int_const 5667...(69 digits omitted)...6251"},"value":"0x7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b"},"visibility":"internal"},{"body":{"id":3715,"nodeType":"Block","src":"612:105:26","statements":[{"AST":{"nativeSrc":"647:64:26","nodeType":"YulBlock","src":"647:64:26","statements":[{"nativeSrc":"661:40:26","nodeType":"YulAssignment","src":"661:40:26","value":{"arguments":[{"name":"NONZERO_DELTA_COUNT_SLOT","nativeSrc":"676:24:26","nodeType":"YulIdentifier","src":"676:24:26"}],"functionName":{"name":"tload","nativeSrc":"670:5:26","nodeType":"YulIdentifier","src":"670:5:26"},"nativeSrc":"670:31:26","nodeType":"YulFunctionCall","src":"670:31:26"},"variableNames":[{"name":"count","nativeSrc":"661:5:26","nodeType":"YulIdentifier","src":"661:5:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3709,"isOffset":false,"isSlot":false,"src":"676:24:26","valueSize":1},{"declaration":3712,"isOffset":false,"isSlot":false,"src":"661:5:26","valueSize":1}],"flags":["memory-safe"],"id":3714,"nodeType":"InlineAssembly","src":"622:89:26"}]},"id":3716,"implemented":true,"kind":"function","modifiers":[],"name":"read","nameLocation":"567:4:26","nodeType":"FunctionDefinition","parameters":{"id":3710,"nodeType":"ParameterList","parameters":[],"src":"571:2:26"},"returnParameters":{"id":3713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3712,"mutability":"mutable","name":"count","nameLocation":"605:5:26","nodeType":"VariableDeclaration","scope":3716,"src":"597:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3711,"name":"uint256","nodeType":"ElementaryTypeName","src":"597:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:15:26"},"scope":3728,"src":"558:159:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3720,"nodeType":"Block","src":"753:196:26","statements":[{"AST":{"nativeSrc":"788:155:26","nodeType":"YulBlock","src":"788:155:26","statements":[{"nativeSrc":"802:44:26","nodeType":"YulVariableDeclaration","src":"802:44:26","value":{"arguments":[{"name":"NONZERO_DELTA_COUNT_SLOT","nativeSrc":"821:24:26","nodeType":"YulIdentifier","src":"821:24:26"}],"functionName":{"name":"tload","nativeSrc":"815:5:26","nodeType":"YulIdentifier","src":"815:5:26"},"nativeSrc":"815:31:26","nodeType":"YulFunctionCall","src":"815:31:26"},"variables":[{"name":"count","nativeSrc":"806:5:26","nodeType":"YulTypedName","src":"806:5:26","type":""}]},{"nativeSrc":"859:22:26","nodeType":"YulAssignment","src":"859:22:26","value":{"arguments":[{"name":"count","nativeSrc":"872:5:26","nodeType":"YulIdentifier","src":"872:5:26"},{"kind":"number","nativeSrc":"879:1:26","nodeType":"YulLiteral","src":"879:1:26","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"868:3:26","nodeType":"YulIdentifier","src":"868:3:26"},"nativeSrc":"868:13:26","nodeType":"YulFunctionCall","src":"868:13:26"},"variableNames":[{"name":"count","nativeSrc":"859:5:26","nodeType":"YulIdentifier","src":"859:5:26"}]},{"expression":{"arguments":[{"name":"NONZERO_DELTA_COUNT_SLOT","nativeSrc":"901:24:26","nodeType":"YulIdentifier","src":"901:24:26"},{"name":"count","nativeSrc":"927:5:26","nodeType":"YulIdentifier","src":"927:5:26"}],"functionName":{"name":"tstore","nativeSrc":"894:6:26","nodeType":"YulIdentifier","src":"894:6:26"},"nativeSrc":"894:39:26","nodeType":"YulFunctionCall","src":"894:39:26"},"nativeSrc":"894:39:26","nodeType":"YulExpressionStatement","src":"894:39:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3709,"isOffset":false,"isSlot":false,"src":"821:24:26","valueSize":1},{"declaration":3709,"isOffset":false,"isSlot":false,"src":"901:24:26","valueSize":1}],"flags":["memory-safe"],"id":3719,"nodeType":"InlineAssembly","src":"763:180:26"}]},"id":3721,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"732:9:26","nodeType":"FunctionDefinition","parameters":{"id":3717,"nodeType":"ParameterList","parameters":[],"src":"741:2:26"},"returnParameters":{"id":3718,"nodeType":"ParameterList","parameters":[],"src":"753:0:26"},"scope":3728,"src":"723:226:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3726,"nodeType":"Block","src":"1261:196:26","statements":[{"AST":{"nativeSrc":"1296:155:26","nodeType":"YulBlock","src":"1296:155:26","statements":[{"nativeSrc":"1310:44:26","nodeType":"YulVariableDeclaration","src":"1310:44:26","value":{"arguments":[{"name":"NONZERO_DELTA_COUNT_SLOT","nativeSrc":"1329:24:26","nodeType":"YulIdentifier","src":"1329:24:26"}],"functionName":{"name":"tload","nativeSrc":"1323:5:26","nodeType":"YulIdentifier","src":"1323:5:26"},"nativeSrc":"1323:31:26","nodeType":"YulFunctionCall","src":"1323:31:26"},"variables":[{"name":"count","nativeSrc":"1314:5:26","nodeType":"YulTypedName","src":"1314:5:26","type":""}]},{"nativeSrc":"1367:22:26","nodeType":"YulAssignment","src":"1367:22:26","value":{"arguments":[{"name":"count","nativeSrc":"1380:5:26","nodeType":"YulIdentifier","src":"1380:5:26"},{"kind":"number","nativeSrc":"1387:1:26","nodeType":"YulLiteral","src":"1387:1:26","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1376:3:26","nodeType":"YulIdentifier","src":"1376:3:26"},"nativeSrc":"1376:13:26","nodeType":"YulFunctionCall","src":"1376:13:26"},"variableNames":[{"name":"count","nativeSrc":"1367:5:26","nodeType":"YulIdentifier","src":"1367:5:26"}]},{"expression":{"arguments":[{"name":"NONZERO_DELTA_COUNT_SLOT","nativeSrc":"1409:24:26","nodeType":"YulIdentifier","src":"1409:24:26"},{"name":"count","nativeSrc":"1435:5:26","nodeType":"YulIdentifier","src":"1435:5:26"}],"functionName":{"name":"tstore","nativeSrc":"1402:6:26","nodeType":"YulIdentifier","src":"1402:6:26"},"nativeSrc":"1402:39:26","nodeType":"YulFunctionCall","src":"1402:39:26"},"nativeSrc":"1402:39:26","nodeType":"YulExpressionStatement","src":"1402:39:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3709,"isOffset":false,"isSlot":false,"src":"1329:24:26","valueSize":1},{"declaration":3709,"isOffset":false,"isSlot":false,"src":"1409:24:26","valueSize":1}],"flags":["memory-safe"],"id":3725,"nodeType":"InlineAssembly","src":"1271:180:26"}]},"documentation":{"id":3722,"nodeType":"StructuredDocumentation","src":"955:271:26","text":"@notice Potential to underflow. Ensure checks are performed by integrating contracts to ensure this does not happen.\n Current usage ensures this will not happen because we call decrement with known boundaries (only up to the number of times we call increment)."},"id":3727,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1240:9:26","nodeType":"FunctionDefinition","parameters":{"id":3723,"nodeType":"ParameterList","parameters":[],"src":"1249:2:26"},"returnParameters":{"id":3724,"nodeType":"ParameterList","parameters":[],"src":"1261:0:26"},"scope":3728,"src":"1231:226:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3729,"src":"285:1174:26","usedErrors":[],"usedEvents":[]}],"src":"37:1423:26"},"id":26},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ParseBytes.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ParseBytes.sol","exportedSymbols":{"ParseBytes":[7600]},"id":7601,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7571,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:27"},{"abstract":false,"baseContracts":[],"canonicalName":"ParseBytes","contractDependencies":[],"contractKind":"library","documentation":{"id":7572,"nodeType":"StructuredDocumentation","src":"58:311:27","text":"@notice Parses bytes returned from hooks and the byte selector used to check return selectors from hooks.\n @dev parseSelector also is used to parse the expected selector\n For parsing hook returns, note that all hooks return either bytes4 or (bytes4, 32-byte-delta) or (bytes4, 32-byte-delta, uint24)."},"fullyImplemented":true,"id":7600,"linearizedBaseContracts":[7600],"name":"ParseBytes","nameLocation":"377:10:27","nodeType":"ContractDefinition","nodes":[{"body":{"id":7580,"nodeType":"Block","src":"478:176:27","statements":[{"AST":{"nativeSrc":"588:60:27","nodeType":"YulBlock","src":"588:60:27","statements":[{"nativeSrc":"602:36:27","nodeType":"YulAssignment","src":"602:36:27","value":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"624:6:27","nodeType":"YulIdentifier","src":"624:6:27"},{"kind":"number","nativeSrc":"632:4:27","nodeType":"YulLiteral","src":"632:4:27","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"620:3:27","nodeType":"YulIdentifier","src":"620:3:27"},"nativeSrc":"620:17:27","nodeType":"YulFunctionCall","src":"620:17:27"}],"functionName":{"name":"mload","nativeSrc":"614:5:27","nodeType":"YulIdentifier","src":"614:5:27"},"nativeSrc":"614:24:27","nodeType":"YulFunctionCall","src":"614:24:27"},"variableNames":[{"name":"selector","nativeSrc":"602:8:27","nodeType":"YulIdentifier","src":"602:8:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7574,"isOffset":false,"isSlot":false,"src":"624:6:27","valueSize":1},{"declaration":7577,"isOffset":false,"isSlot":false,"src":"602:8:27","valueSize":1}],"flags":["memory-safe"],"id":7579,"nodeType":"InlineAssembly","src":"563:85:27"}]},"id":7581,"implemented":true,"kind":"function","modifiers":[],"name":"parseSelector","nameLocation":"403:13:27","nodeType":"FunctionDefinition","parameters":{"id":7575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7574,"mutability":"mutable","name":"result","nameLocation":"430:6:27","nodeType":"VariableDeclaration","scope":7581,"src":"417:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7573,"name":"bytes","nodeType":"ElementaryTypeName","src":"417:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"416:21:27"},"returnParameters":{"id":7578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7577,"mutability":"mutable","name":"selector","nameLocation":"468:8:27","nodeType":"VariableDeclaration","scope":7581,"src":"461:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7576,"name":"bytes4","nodeType":"ElementaryTypeName","src":"461:6:27","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"460:17:27"},"scope":7600,"src":"394:260:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7589,"nodeType":"Block","src":"736:180:27","statements":[{"AST":{"nativeSrc":"853:57:27","nodeType":"YulBlock","src":"853:57:27","statements":[{"nativeSrc":"867:33:27","nodeType":"YulAssignment","src":"867:33:27","value":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"886:6:27","nodeType":"YulIdentifier","src":"886:6:27"},{"kind":"number","nativeSrc":"894:4:27","nodeType":"YulLiteral","src":"894:4:27","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"882:3:27","nodeType":"YulIdentifier","src":"882:3:27"},"nativeSrc":"882:17:27","nodeType":"YulFunctionCall","src":"882:17:27"}],"functionName":{"name":"mload","nativeSrc":"876:5:27","nodeType":"YulIdentifier","src":"876:5:27"},"nativeSrc":"876:24:27","nodeType":"YulFunctionCall","src":"876:24:27"},"variableNames":[{"name":"lpFee","nativeSrc":"867:5:27","nodeType":"YulIdentifier","src":"867:5:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7586,"isOffset":false,"isSlot":false,"src":"867:5:27","valueSize":1},{"declaration":7583,"isOffset":false,"isSlot":false,"src":"886:6:27","valueSize":1}],"flags":["memory-safe"],"id":7588,"nodeType":"InlineAssembly","src":"828:82:27"}]},"id":7590,"implemented":true,"kind":"function","modifiers":[],"name":"parseFee","nameLocation":"669:8:27","nodeType":"FunctionDefinition","parameters":{"id":7584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7583,"mutability":"mutable","name":"result","nameLocation":"691:6:27","nodeType":"VariableDeclaration","scope":7590,"src":"678:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7582,"name":"bytes","nodeType":"ElementaryTypeName","src":"678:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"677:21:27"},"returnParameters":{"id":7587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7586,"mutability":"mutable","name":"lpFee","nameLocation":"729:5:27","nodeType":"VariableDeclaration","scope":7590,"src":"722:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7585,"name":"uint24","nodeType":"ElementaryTypeName","src":"722:6:27","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"721:14:27"},"scope":7600,"src":"660:256:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7598,"nodeType":"Block","src":"1011:186:27","statements":[{"AST":{"nativeSrc":"1129:62:27","nodeType":"YulBlock","src":"1129:62:27","statements":[{"nativeSrc":"1143:38:27","nodeType":"YulAssignment","src":"1143:38:27","value":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"1167:6:27","nodeType":"YulIdentifier","src":"1167:6:27"},{"kind":"number","nativeSrc":"1175:4:27","nodeType":"YulLiteral","src":"1175:4:27","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"1163:3:27","nodeType":"YulIdentifier","src":"1163:3:27"},"nativeSrc":"1163:17:27","nodeType":"YulFunctionCall","src":"1163:17:27"}],"functionName":{"name":"mload","nativeSrc":"1157:5:27","nodeType":"YulIdentifier","src":"1157:5:27"},"nativeSrc":"1157:24:27","nodeType":"YulFunctionCall","src":"1157:24:27"},"variableNames":[{"name":"hookReturn","nativeSrc":"1143:10:27","nodeType":"YulIdentifier","src":"1143:10:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7595,"isOffset":false,"isSlot":false,"src":"1143:10:27","valueSize":1},{"declaration":7592,"isOffset":false,"isSlot":false,"src":"1167:6:27","valueSize":1}],"flags":["memory-safe"],"id":7597,"nodeType":"InlineAssembly","src":"1104:87:27"}]},"id":7599,"implemented":true,"kind":"function","modifiers":[],"name":"parseReturnDelta","nameLocation":"931:16:27","nodeType":"FunctionDefinition","parameters":{"id":7593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7592,"mutability":"mutable","name":"result","nameLocation":"961:6:27","nodeType":"VariableDeclaration","scope":7599,"src":"948:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7591,"name":"bytes","nodeType":"ElementaryTypeName","src":"948:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"947:21:27"},"returnParameters":{"id":7596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7595,"mutability":"mutable","name":"hookReturn","nameLocation":"999:10:27","nodeType":"VariableDeclaration","scope":7599,"src":"992:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7594,"name":"int256","nodeType":"ElementaryTypeName","src":"992:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"991:19:27"},"scope":7600,"src":"922:275:27","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7601,"src":"369:830:27","usedErrors":[],"usedEvents":[]}],"src":"33:1167:27"},"id":27},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Pool.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Pool.sol","exportedSymbols":{"BalanceDelta":[6311],"BalanceDeltaLibrary":[6469],"CustomRevert":[2358],"FixedPoint128":[7607],"LPFeeLibrary":[3679],"LiquidityMath":[7623],"Pool":[5409],"Position":[5575],"ProtocolFeeLibrary":[7395],"SafeCast":[5751],"Slot0":[8632],"SqrtPriceMath":[8114],"SwapMath":[8366],"TickBitmap":[8598],"TickMath":[6305],"UnsafeMath":[8628],"toBalanceDelta":[6337]},"id":5410,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":3730,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:28"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol","file":"./SafeCast.sol","id":3732,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":5752,"src":"62:40:28","symbolAliases":[{"foreign":{"id":3731,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"70:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickBitmap.sol","file":"./TickBitmap.sol","id":3734,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":8599,"src":"103:44:28","symbolAliases":[{"foreign":{"id":3733,"name":"TickBitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"111:10:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Position.sol","file":"./Position.sol","id":3736,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":5576,"src":"148:40:28","symbolAliases":[{"foreign":{"id":3735,"name":"Position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"156:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/UnsafeMath.sol","file":"./UnsafeMath.sol","id":3738,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":8629,"src":"189:44:28","symbolAliases":[{"foreign":{"id":3737,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"197:10:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint128.sol","file":"./FixedPoint128.sol","id":3740,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":7608,"src":"234:50:28","symbolAliases":[{"foreign":{"id":3739,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"242:13:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickMath.sol","file":"./TickMath.sol","id":3742,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":6306,"src":"285:40:28","symbolAliases":[{"foreign":{"id":3741,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"293:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SqrtPriceMath.sol","file":"./SqrtPriceMath.sol","id":3744,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":8115,"src":"326:50:28","symbolAliases":[{"foreign":{"id":3743,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"334:13:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SwapMath.sol","file":"./SwapMath.sol","id":3746,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":8367,"src":"377:40:28","symbolAliases":[{"foreign":{"id":3745,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"385:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol","file":"../types/BalanceDelta.sol","id":3750,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":6470,"src":"418:92:28","symbolAliases":[{"foreign":{"id":3747,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"426:12:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3748,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"440:14:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3749,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"456:19:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Slot0.sol","file":"../types/Slot0.sol","id":3752,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":8746,"src":"511:41:28","symbolAliases":[{"foreign":{"id":3751,"name":"Slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"519:5:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ProtocolFeeLibrary.sol","file":"./ProtocolFeeLibrary.sol","id":3754,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":7396,"src":"553:60:28","symbolAliases":[{"foreign":{"id":3753,"name":"ProtocolFeeLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"561:18:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LiquidityMath.sol","file":"./LiquidityMath.sol","id":3756,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":7624,"src":"614:50:28","symbolAliases":[{"foreign":{"id":3755,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"622:13:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LPFeeLibrary.sol","file":"./LPFeeLibrary.sol","id":3758,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":3680,"src":"665:48:28","symbolAliases":[{"foreign":{"id":3757,"name":"LPFeeLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"673:12:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./CustomRevert.sol","id":3760,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5410,"sourceUnit":2359,"src":"714:48:28","symbolAliases":[{"foreign":{"id":3759,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"722:12:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Pool","contractDependencies":[],"contractKind":"library","documentation":{"id":3761,"nodeType":"StructuredDocumentation","src":"764:71:28","text":"@notice a library with all actions that can be performed on a pool"},"fullyImplemented":true,"id":5409,"linearizedBaseContracts":[5409],"name":"Pool","nameLocation":"843:4:28","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3763,"libraryName":{"id":3762,"name":"SafeCast","nameLocations":["860:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":5751,"src":"860:8:28"},"nodeType":"UsingForDirective","src":"854:21:28"},{"global":false,"id":3768,"libraryName":{"id":3764,"name":"TickBitmap","nameLocations":["886:10:28"],"nodeType":"IdentifierPath","referencedDeclaration":8598,"src":"886:10:28"},"nodeType":"UsingForDirective","src":"880:47:28","typeName":{"id":3767,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3765,"name":"int16","nodeType":"ElementaryTypeName","src":"909:5:28","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"901:25:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3766,"name":"uint256","nodeType":"ElementaryTypeName","src":"918:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},{"global":false,"id":3774,"libraryName":{"id":3769,"name":"Position","nameLocations":["938:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":5575,"src":"938:8:28"},"nodeType":"UsingForDirective","src":"932:54:28","typeName":{"id":3773,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"959:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"951:34:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$","typeString":"mapping(bytes32 => struct Position.State)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3772,"nodeType":"UserDefinedTypeName","pathNode":{"id":3771,"name":"Position.State","nameLocations":["970:8:28","979:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":5433,"src":"970:14:28"},"referencedDeclaration":5433,"src":"970:14:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"}}}},{"global":false,"id":3778,"libraryName":{"id":3775,"name":"Position","nameLocations":["997:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":5575,"src":"997:8:28"},"nodeType":"UsingForDirective","src":"991:34:28","typeName":{"id":3777,"nodeType":"UserDefinedTypeName","pathNode":{"id":3776,"name":"Position.State","nameLocations":["1010:8:28","1019:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":5433,"src":"1010:14:28"},"referencedDeclaration":5433,"src":"1010:14:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"}}},{"global":false,"id":3782,"libraryName":{"id":3779,"name":"Pool","nameLocations":["1036:4:28"],"nodeType":"IdentifierPath","referencedDeclaration":5409,"src":"1036:4:28"},"nodeType":"UsingForDirective","src":"1030:21:28","typeName":{"id":3781,"nodeType":"UserDefinedTypeName","pathNode":{"id":3780,"name":"State","nameLocations":["1045:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"1045:5:28"},"referencedDeclaration":3870,"src":"1045:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}}},{"global":false,"id":3784,"libraryName":{"id":3783,"name":"ProtocolFeeLibrary","nameLocations":["1062:18:28"],"nodeType":"IdentifierPath","referencedDeclaration":7395,"src":"1062:18:28"},"nodeType":"UsingForDirective","src":"1056:31:28"},{"global":false,"id":3787,"libraryName":{"id":3785,"name":"LPFeeLibrary","nameLocations":["1098:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":3679,"src":"1098:12:28"},"nodeType":"UsingForDirective","src":"1092:30:28","typeName":{"id":3786,"name":"uint24","nodeType":"ElementaryTypeName","src":"1115:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}},{"global":false,"id":3790,"libraryName":{"id":3788,"name":"CustomRevert","nameLocations":["1133:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"1133:12:28"},"nodeType":"UsingForDirective","src":"1127:30:28","typeName":{"id":3789,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1150:6:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"documentation":{"id":3791,"nodeType":"StructuredDocumentation","src":"1163:150:28","text":"@notice Thrown when tickLower is not below tickUpper\n @param tickLower The invalid tickLower\n @param tickUpper The invalid tickUpper"},"errorSelector":"c4433ed5","id":3797,"name":"TicksMisordered","nameLocation":"1324:15:28","nodeType":"ErrorDefinition","parameters":{"id":3796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3793,"mutability":"mutable","name":"tickLower","nameLocation":"1346:9:28","nodeType":"VariableDeclaration","scope":3797,"src":"1340:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3792,"name":"int24","nodeType":"ElementaryTypeName","src":"1340:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3795,"mutability":"mutable","name":"tickUpper","nameLocation":"1363:9:28","nodeType":"VariableDeclaration","scope":3797,"src":"1357:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3794,"name":"int24","nodeType":"ElementaryTypeName","src":"1357:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1339:34:28"},"src":"1318:56:28"},{"documentation":{"id":3798,"nodeType":"StructuredDocumentation","src":"1380:102:28","text":"@notice Thrown when tickLower is less than min tick\n @param tickLower The invalid tickLower"},"errorSelector":"d5e2f7ab","id":3802,"name":"TickLowerOutOfBounds","nameLocation":"1493:20:28","nodeType":"ErrorDefinition","parameters":{"id":3801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3800,"mutability":"mutable","name":"tickLower","nameLocation":"1520:9:28","nodeType":"VariableDeclaration","scope":3802,"src":"1514:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3799,"name":"int24","nodeType":"ElementaryTypeName","src":"1514:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1513:17:28"},"src":"1487:44:28"},{"documentation":{"id":3803,"nodeType":"StructuredDocumentation","src":"1537:97:28","text":"@notice Thrown when tickUpper exceeds max tick\n @param tickUpper The invalid tickUpper"},"errorSelector":"1ad777f8","id":3807,"name":"TickUpperOutOfBounds","nameLocation":"1645:20:28","nodeType":"ErrorDefinition","parameters":{"id":3806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3805,"mutability":"mutable","name":"tickUpper","nameLocation":"1672:9:28","nodeType":"VariableDeclaration","scope":3807,"src":"1666:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3804,"name":"int24","nodeType":"ElementaryTypeName","src":"1666:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1665:17:28"},"src":"1639:44:28"},{"documentation":{"id":3808,"nodeType":"StructuredDocumentation","src":"1689:65:28","text":"@notice For the tick spacing, the tick has too much liquidity"},"errorSelector":"b8e3c385","id":3812,"name":"TickLiquidityOverflow","nameLocation":"1765:21:28","nodeType":"ErrorDefinition","parameters":{"id":3811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3810,"mutability":"mutable","name":"tick","nameLocation":"1793:4:28","nodeType":"VariableDeclaration","scope":3812,"src":"1787:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3809,"name":"int24","nodeType":"ElementaryTypeName","src":"1787:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1786:12:28"},"src":"1759:40:28"},{"documentation":{"id":3813,"nodeType":"StructuredDocumentation","src":"1805:72:28","text":"@notice Thrown when trying to initialize an already initialized pool"},"errorSelector":"7983c051","id":3815,"name":"PoolAlreadyInitialized","nameLocation":"1888:22:28","nodeType":"ErrorDefinition","parameters":{"id":3814,"nodeType":"ParameterList","parameters":[],"src":"1910:2:28"},"src":"1882:31:28"},{"documentation":{"id":3816,"nodeType":"StructuredDocumentation","src":"1919:70:28","text":"@notice Thrown when trying to interact with a non-initialized pool"},"errorSelector":"486aa307","id":3818,"name":"PoolNotInitialized","nameLocation":"2000:18:28","nodeType":"ErrorDefinition","parameters":{"id":3817,"nodeType":"ParameterList","parameters":[],"src":"2018:2:28"},"src":"1994:27:28"},{"documentation":{"id":3819,"nodeType":"StructuredDocumentation","src":"2027:225:28","text":"@notice Thrown when sqrtPriceLimitX96 on a swap has already exceeded its limit\n @param sqrtPriceCurrentX96 The invalid, already surpassed sqrtPriceLimitX96\n @param sqrtPriceLimitX96 The surpassed price limit"},"errorSelector":"7c9c6e8f","id":3825,"name":"PriceLimitAlreadyExceeded","nameLocation":"2263:25:28","nodeType":"ErrorDefinition","parameters":{"id":3824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3821,"mutability":"mutable","name":"sqrtPriceCurrentX96","nameLocation":"2297:19:28","nodeType":"VariableDeclaration","scope":3825,"src":"2289:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3820,"name":"uint160","nodeType":"ElementaryTypeName","src":"2289:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3823,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"2326:17:28","nodeType":"VariableDeclaration","scope":3825,"src":"2318:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3822,"name":"uint160","nodeType":"ElementaryTypeName","src":"2318:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2288:56:28"},"src":"2257:88:28"},{"documentation":{"id":3826,"nodeType":"StructuredDocumentation","src":"2351:158:28","text":"@notice Thrown when sqrtPriceLimitX96 lies outside of valid tick/price range\n @param sqrtPriceLimitX96 The invalid, out-of-bounds sqrtPriceLimitX96"},"errorSelector":"9e4d7cc7","id":3830,"name":"PriceLimitOutOfBounds","nameLocation":"2520:21:28","nodeType":"ErrorDefinition","parameters":{"id":3829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3828,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"2550:17:28","nodeType":"VariableDeclaration","scope":3830,"src":"2542:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3827,"name":"uint160","nodeType":"ElementaryTypeName","src":"2542:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2541:27:28"},"src":"2514:55:28"},{"documentation":{"id":3831,"nodeType":"StructuredDocumentation","src":"2575:117:28","text":"@notice Thrown by donate if there is currently 0 liquidity, since the fees will not go to any liquidity providers"},"errorSelector":"a74f97ab","id":3833,"name":"NoLiquidityToReceiveFees","nameLocation":"2703:24:28","nodeType":"ErrorDefinition","parameters":{"id":3832,"nodeType":"ParameterList","parameters":[],"src":"2727:2:28"},"src":"2697:33:28"},{"documentation":{"id":3834,"nodeType":"StructuredDocumentation","src":"2736:86:28","text":"@notice Thrown when trying to swap with max lp fee and specifying an output amount"},"errorSelector":"96206246","id":3836,"name":"InvalidFeeForExactOut","nameLocation":"2833:21:28","nodeType":"ErrorDefinition","parameters":{"id":3835,"nodeType":"ParameterList","parameters":[],"src":"2854:2:28"},"src":"2827:30:28"},{"canonicalName":"Pool.TickInfo","id":3845,"members":[{"constant":false,"id":3838,"mutability":"mutable","name":"liquidityGross","nameLocation":"3019:14:28","nodeType":"VariableDeclaration","scope":3845,"src":"3011:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3837,"name":"uint128","nodeType":"ElementaryTypeName","src":"3011:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3840,"mutability":"mutable","name":"liquidityNet","nameLocation":"3161:12:28","nodeType":"VariableDeclaration","scope":3845,"src":"3154:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":3839,"name":"int128","nodeType":"ElementaryTypeName","src":"3154:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":3842,"mutability":"mutable","name":"feeGrowthOutside0X128","nameLocation":"3404:21:28","nodeType":"VariableDeclaration","scope":3845,"src":"3396:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3841,"name":"uint256","nodeType":"ElementaryTypeName","src":"3396:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3844,"mutability":"mutable","name":"feeGrowthOutside1X128","nameLocation":"3443:21:28","nodeType":"VariableDeclaration","scope":3845,"src":"3435:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3843,"name":"uint256","nodeType":"ElementaryTypeName","src":"3435:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TickInfo","nameLocation":"2926:8:28","nodeType":"StructDefinition","scope":5409,"src":"2919:552:28","visibility":"public"},{"canonicalName":"Pool.State","documentation":{"id":3846,"nodeType":"StructuredDocumentation","src":"3477:333:28","text":"@notice The state of a pool\n @dev Note that feeGrowthGlobal can be artificially inflated\n For pools with a single liquidity position, actors can donate to themselves to freely inflate feeGrowthGlobal\n atomically donating and collecting fees in the same unlockCallback may make the inflated value more extreme"},"id":3870,"members":[{"constant":false,"id":3849,"mutability":"mutable","name":"slot0","nameLocation":"3844:5:28","nodeType":"VariableDeclaration","scope":3870,"src":"3838:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":3848,"nodeType":"UserDefinedTypeName","pathNode":{"id":3847,"name":"Slot0","nameLocations":["3838:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"3838:5:28"},"referencedDeclaration":8632,"src":"3838:5:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"},{"constant":false,"id":3851,"mutability":"mutable","name":"feeGrowthGlobal0X128","nameLocation":"3867:20:28","nodeType":"VariableDeclaration","scope":3870,"src":"3859:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3850,"name":"uint256","nodeType":"ElementaryTypeName","src":"3859:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3853,"mutability":"mutable","name":"feeGrowthGlobal1X128","nameLocation":"3905:20:28","nodeType":"VariableDeclaration","scope":3870,"src":"3897:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3852,"name":"uint256","nodeType":"ElementaryTypeName","src":"3897:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3855,"mutability":"mutable","name":"liquidity","nameLocation":"3943:9:28","nodeType":"VariableDeclaration","scope":3870,"src":"3935:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3854,"name":"uint128","nodeType":"ElementaryTypeName","src":"3935:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3860,"mutability":"mutable","name":"ticks","nameLocation":"3994:5:28","nodeType":"VariableDeclaration","scope":3870,"src":"3962:37:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_TickInfo_$3845_storage_$","typeString":"mapping(int24 => struct Pool.TickInfo)"},"typeName":{"id":3859,"keyName":"tick","keyNameLocation":"3976:4:28","keyType":{"id":3856,"name":"int24","nodeType":"ElementaryTypeName","src":"3970:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"3962:31:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_TickInfo_$3845_storage_$","typeString":"mapping(int24 => struct Pool.TickInfo)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3858,"nodeType":"UserDefinedTypeName","pathNode":{"id":3857,"name":"TickInfo","nameLocations":["3984:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":3845,"src":"3984:8:28"},"referencedDeclaration":3845,"src":"3984:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"}}},"visibility":"internal"},{"constant":false,"id":3864,"mutability":"mutable","name":"tickBitmap","nameLocation":"4043:10:28","nodeType":"VariableDeclaration","scope":3870,"src":"4009:44:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":3863,"keyName":"wordPos","keyNameLocation":"4023:7:28","keyType":{"id":3861,"name":"int16","nodeType":"ElementaryTypeName","src":"4017:5:28","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"4009:33:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3862,"name":"uint256","nodeType":"ElementaryTypeName","src":"4034:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":3869,"mutability":"mutable","name":"positions","nameLocation":"4110:9:28","nodeType":"VariableDeclaration","scope":3870,"src":"4063:56:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$","typeString":"mapping(bytes32 => struct Position.State)"},"typeName":{"id":3868,"keyName":"positionKey","keyNameLocation":"4079:11:28","keyType":{"id":3865,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4071:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"4063:46:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$","typeString":"mapping(bytes32 => struct Position.State)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3867,"nodeType":"UserDefinedTypeName","pathNode":{"id":3866,"name":"Position.State","nameLocations":["4094:8:28","4103:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":5433,"src":"4094:14:28"},"referencedDeclaration":5433,"src":"4094:14:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"}}},"visibility":"internal"}],"name":"State","nameLocation":"3822:5:28","nodeType":"StructDefinition","scope":5409,"src":"3815:311:28","visibility":"public"},{"body":{"id":3917,"nodeType":"Block","src":"4249:294:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3878,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"4263:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3879,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3875,"src":"4276:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4263:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3890,"nodeType":"IfStatement","src":"4259:85:28","trueBody":{"expression":{"arguments":[{"id":3886,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"4323:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":3887,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3875,"src":"4334:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":3881,"name":"TicksMisordered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"4287:15:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$_t_int24_$returns$_t_error_$","typeString":"function (int24,int24) pure returns (error)"}},"id":3884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4303:8:28","memberName":"selector","nodeType":"MemberAccess","src":"4287:24:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4312:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2316,"src":"4287:35:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24,int24) pure"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4287:57:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3889,"nodeType":"ExpressionStatement","src":"4287:57:28"}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":3894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3891,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"4358:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3892,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"4370:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":3893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4379:8:28","memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":5776,"src":"4370:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4358:29:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3903,"nodeType":"IfStatement","src":"4354:86:28","trueBody":{"expression":{"arguments":[{"id":3900,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"4430:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":3895,"name":"TickLowerOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3802,"src":"4389:20:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$returns$_t_error_$","typeString":"function (int24) pure returns (error)"}},"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4410:8:28","memberName":"selector","nodeType":"MemberAccess","src":"4389:29:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4419:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2294,"src":"4389:40:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24) pure"}},"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4389:51:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3902,"nodeType":"ExpressionStatement","src":"4389:51:28"}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3904,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3875,"src":"4454:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":3905,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"4466:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":3906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4475:8:28","memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"4466:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4454:29:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3916,"nodeType":"IfStatement","src":"4450:86:28","trueBody":{"expression":{"arguments":[{"id":3913,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3875,"src":"4526:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":3908,"name":"TickUpperOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"4485:20:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$returns$_t_error_$","typeString":"function (int24) pure returns (error)"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4506:8:28","memberName":"selector","nodeType":"MemberAccess","src":"4485:29:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4515:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2294,"src":"4485:40:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24) pure"}},"id":3914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:51:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3915,"nodeType":"ExpressionStatement","src":"4485:51:28"}}]},"documentation":{"id":3871,"nodeType":"StructuredDocumentation","src":"4132:45:28","text":"@dev Common checks for valid tick inputs."},"id":3918,"implemented":true,"kind":"function","modifiers":[],"name":"checkTicks","nameLocation":"4191:10:28","nodeType":"FunctionDefinition","parameters":{"id":3876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3873,"mutability":"mutable","name":"tickLower","nameLocation":"4208:9:28","nodeType":"VariableDeclaration","scope":3918,"src":"4202:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3872,"name":"int24","nodeType":"ElementaryTypeName","src":"4202:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3875,"mutability":"mutable","name":"tickUpper","nameLocation":"4225:9:28","nodeType":"VariableDeclaration","scope":3918,"src":"4219:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3874,"name":"int24","nodeType":"ElementaryTypeName","src":"4219:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4201:34:28"},"returnParameters":{"id":3877,"nodeType":"ParameterList","parameters":[],"src":"4249:0:28"},"scope":5409,"src":"4182:361:28","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":3972,"nodeType":"Block","src":"4655:328:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3930,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3921,"src":"4669:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":3931,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4674:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"4669:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":3932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4680:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"4669:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":3933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4669:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4698:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4669:30:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3943,"nodeType":"IfStatement","src":"4665:80:28","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3936,"name":"PoolAlreadyInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"4701:22:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4724:8:28","memberName":"selector","nodeType":"MemberAccess","src":"4701:31:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4733:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"4701:42:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":3941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4701:44:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3942,"nodeType":"ExpressionStatement","src":"4701:44:28"}},{"expression":{"id":3949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3944,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"4756:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3947,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3923,"src":"4791:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":3945,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"4763:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":3946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4772:18:28","memberName":"getTickAtSqrtPrice","nodeType":"MemberAccess","referencedDeclaration":6304,"src":"4763:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_int24_$","typeString":"function (uint160) pure returns (int24)"}},"id":3948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4763:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4756:48:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":3950,"nodeType":"ExpressionStatement","src":"4756:48:28"},{"expression":{"id":3970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3951,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3921,"src":"4881:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":3953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4886:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"4881:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3968,"name":"lpFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"4970:5:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"arguments":[{"id":3965,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"4955:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"arguments":[{"id":3962,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3923,"src":"4933:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":3958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4913:1:28","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":3957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4905:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4905:7:28","typeDescriptions":{}}},"id":3959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4905:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3954,"name":"Slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"4894:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"type(Slot0)"}},"id":3955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4900:4:28","memberName":"wrap","nodeType":"MemberAccess","src":"4894:10:28","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (bytes32) pure returns (Slot0)"}},"id":3960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4894:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":3961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4917:15:28","memberName":"setSqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8705,"src":"4894:38:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$_t_uint160_$returns$_t_userDefinedValueType$_Slot0_$8632_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0,uint160) pure returns (Slot0)"}},"id":3963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4894:52:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":3964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4947:7:28","memberName":"setTick","nodeType":"MemberAccess","referencedDeclaration":8718,"src":"4894:60:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$_t_int24_$returns$_t_userDefinedValueType$_Slot0_$8632_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0,int24) pure returns (Slot0)"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4894:66:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":3967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4961:8:28","memberName":"setLpFee","nodeType":"MemberAccess","referencedDeclaration":8744,"src":"4894:75:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$_t_uint24_$returns$_t_userDefinedValueType$_Slot0_$8632_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0,uint24) pure returns (Slot0)"}},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4894:82:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"src":"4881:95:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":3971,"nodeType":"ExpressionStatement","src":"4881:95:28"}]},"id":3973,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"4558:10:28","nodeType":"FunctionDefinition","parameters":{"id":3926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3921,"mutability":"mutable","name":"self","nameLocation":"4583:4:28","nodeType":"VariableDeclaration","scope":3973,"src":"4569:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":3920,"nodeType":"UserDefinedTypeName","pathNode":{"id":3919,"name":"State","nameLocations":["4569:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"4569:5:28"},"referencedDeclaration":3870,"src":"4569:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":3923,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"4597:12:28","nodeType":"VariableDeclaration","scope":3973,"src":"4589:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3922,"name":"uint160","nodeType":"ElementaryTypeName","src":"4589:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3925,"mutability":"mutable","name":"lpFee","nameLocation":"4618:5:28","nodeType":"VariableDeclaration","scope":3973,"src":"4611:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3924,"name":"uint24","nodeType":"ElementaryTypeName","src":"4611:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"4568:56:28"},"returnParameters":{"id":3929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3928,"mutability":"mutable","name":"tick","nameLocation":"4649:4:28","nodeType":"VariableDeclaration","scope":3973,"src":"4643:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3927,"name":"int24","nodeType":"ElementaryTypeName","src":"4643:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4642:12:28"},"scope":5409,"src":"4549:434:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3996,"nodeType":"Block","src":"5062:105:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3981,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"5072:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":3983,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5077:20:28","memberName":"checkPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":5344,"src":"5072:25:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_State_$3870_storage_ptr_$returns$__$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer) view"}},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5072:27:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3985,"nodeType":"ExpressionStatement","src":"5072:27:28"},{"expression":{"id":3994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3986,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"5109:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":3988,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5114:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"5109:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3992,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3978,"src":"5148:11:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"expression":{"id":3989,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"5122:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":3990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5127:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"5122:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5133:14:28","memberName":"setProtocolFee","nodeType":"MemberAccess","referencedDeclaration":8731,"src":"5122:25:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$_t_uint24_$returns$_t_userDefinedValueType$_Slot0_$8632_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0,uint24) pure returns (Slot0)"}},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5122:38:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"src":"5109:51:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":3995,"nodeType":"ExpressionStatement","src":"5109:51:28"}]},"id":3997,"implemented":true,"kind":"function","modifiers":[],"name":"setProtocolFee","nameLocation":"4998:14:28","nodeType":"FunctionDefinition","parameters":{"id":3979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3976,"mutability":"mutable","name":"self","nameLocation":"5027:4:28","nodeType":"VariableDeclaration","scope":3997,"src":"5013:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":3975,"nodeType":"UserDefinedTypeName","pathNode":{"id":3974,"name":"State","nameLocations":["5013:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"5013:5:28"},"referencedDeclaration":3870,"src":"5013:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":3978,"mutability":"mutable","name":"protocolFee","nameLocation":"5040:11:28","nodeType":"VariableDeclaration","scope":3997,"src":"5033:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3977,"name":"uint24","nodeType":"ElementaryTypeName","src":"5033:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"5012:40:28"},"returnParameters":{"id":3980,"nodeType":"ParameterList","parameters":[],"src":"5062:0:28"},"scope":5409,"src":"4989:178:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4021,"nodeType":"Block","src":"5296:93:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4006,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4001,"src":"5306:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5311:20:28","memberName":"checkPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":5344,"src":"5306:25:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_State_$3870_storage_ptr_$returns$__$attached_to$_t_struct$_State_$3870_storage_ptr_$","typeString":"function (struct Pool.State storage pointer) view"}},"id":4009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5306:27:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4010,"nodeType":"ExpressionStatement","src":"5306:27:28"},{"expression":{"id":4019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4011,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4001,"src":"5343:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5348:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"5343:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4017,"name":"lpFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4003,"src":"5376:5:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"expression":{"id":4014,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4001,"src":"5356:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5361:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"5356:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5367:8:28","memberName":"setLpFee","nodeType":"MemberAccess","referencedDeclaration":8744,"src":"5356:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$_t_uint24_$returns$_t_userDefinedValueType$_Slot0_$8632_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0,uint24) pure returns (Slot0)"}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5356:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"src":"5343:39:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4020,"nodeType":"ExpressionStatement","src":"5343:39:28"}]},"documentation":{"id":3998,"nodeType":"StructuredDocumentation","src":"5173:57:28","text":"@notice Only dynamic fee pools may update the lp fee."},"id":4022,"implemented":true,"kind":"function","modifiers":[],"name":"setLPFee","nameLocation":"5244:8:28","nodeType":"FunctionDefinition","parameters":{"id":4004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4001,"mutability":"mutable","name":"self","nameLocation":"5267:4:28","nodeType":"VariableDeclaration","scope":4022,"src":"5253:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":4000,"nodeType":"UserDefinedTypeName","pathNode":{"id":3999,"name":"State","nameLocations":["5253:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"5253:5:28"},"referencedDeclaration":3870,"src":"5253:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":4003,"mutability":"mutable","name":"lpFee","nameLocation":"5280:5:28","nodeType":"VariableDeclaration","scope":4022,"src":"5273:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4002,"name":"uint24","nodeType":"ElementaryTypeName","src":"5273:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"5252:34:28"},"returnParameters":{"id":4005,"nodeType":"ParameterList","parameters":[],"src":"5296:0:28"},"scope":5409,"src":"5235:154:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"canonicalName":"Pool.ModifyLiquidityParams","id":4035,"members":[{"constant":false,"id":4024,"mutability":"mutable","name":"owner","nameLocation":"5488:5:28","nodeType":"VariableDeclaration","scope":4035,"src":"5480:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4023,"name":"address","nodeType":"ElementaryTypeName","src":"5480:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4026,"mutability":"mutable","name":"tickLower","nameLocation":"5561:9:28","nodeType":"VariableDeclaration","scope":4035,"src":"5555:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4025,"name":"int24","nodeType":"ElementaryTypeName","src":"5555:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4028,"mutability":"mutable","name":"tickUpper","nameLocation":"5586:9:28","nodeType":"VariableDeclaration","scope":4035,"src":"5580:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4027,"name":"int24","nodeType":"ElementaryTypeName","src":"5580:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4030,"mutability":"mutable","name":"liquidityDelta","nameLocation":"5647:14:28","nodeType":"VariableDeclaration","scope":4035,"src":"5640:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4029,"name":"int128","nodeType":"ElementaryTypeName","src":"5640:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":4032,"mutability":"mutable","name":"tickSpacing","nameLocation":"5714:11:28","nodeType":"VariableDeclaration","scope":4035,"src":"5708:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4031,"name":"int24","nodeType":"ElementaryTypeName","src":"5708:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4034,"mutability":"mutable","name":"salt","nameLocation":"5826:4:28","nodeType":"VariableDeclaration","scope":4035,"src":"5818:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4033,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5818:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"ModifyLiquidityParams","nameLocation":"5402:21:28","nodeType":"StructDefinition","scope":5409,"src":"5395:442:28","visibility":"public"},{"canonicalName":"Pool.ModifyLiquidityState","id":4044,"members":[{"constant":false,"id":4037,"mutability":"mutable","name":"flippedLower","nameLocation":"5886:12:28","nodeType":"VariableDeclaration","scope":4044,"src":"5881:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4036,"name":"bool","nodeType":"ElementaryTypeName","src":"5881:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4039,"mutability":"mutable","name":"liquidityGrossAfterLower","nameLocation":"5916:24:28","nodeType":"VariableDeclaration","scope":4044,"src":"5908:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4038,"name":"uint128","nodeType":"ElementaryTypeName","src":"5908:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4041,"mutability":"mutable","name":"flippedUpper","nameLocation":"5955:12:28","nodeType":"VariableDeclaration","scope":4044,"src":"5950:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4040,"name":"bool","nodeType":"ElementaryTypeName","src":"5950:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4043,"mutability":"mutable","name":"liquidityGrossAfterUpper","nameLocation":"5985:24:28","nodeType":"VariableDeclaration","scope":4044,"src":"5977:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4042,"name":"uint128","nodeType":"ElementaryTypeName","src":"5977:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ModifyLiquidityState","nameLocation":"5850:20:28","nodeType":"StructDefinition","scope":5409,"src":"5843:173:28","visibility":"public"},{"body":{"id":4370,"nodeType":"Block","src":"6573:4237:28","statements":[{"assignments":[4061],"declarations":[{"constant":false,"id":4061,"mutability":"mutable","name":"liquidityDelta","nameLocation":"6590:14:28","nodeType":"VariableDeclaration","scope":4370,"src":"6583:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4060,"name":"int128","nodeType":"ElementaryTypeName","src":"6583:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":4064,"initialValue":{"expression":{"id":4062,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"6607:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6614:14:28","memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":4030,"src":"6607:21:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"6583:45:28"},{"assignments":[4066],"declarations":[{"constant":false,"id":4066,"mutability":"mutable","name":"tickLower","nameLocation":"6644:9:28","nodeType":"VariableDeclaration","scope":4370,"src":"6638:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4065,"name":"int24","nodeType":"ElementaryTypeName","src":"6638:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":4069,"initialValue":{"expression":{"id":4067,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"6656:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6663:9:28","memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":4026,"src":"6656:16:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"6638:34:28"},{"assignments":[4071],"declarations":[{"constant":false,"id":4071,"mutability":"mutable","name":"tickUpper","nameLocation":"6688:9:28","nodeType":"VariableDeclaration","scope":4370,"src":"6682:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4070,"name":"int24","nodeType":"ElementaryTypeName","src":"6682:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":4074,"initialValue":{"expression":{"id":4072,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"6700:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6707:9:28","memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":4028,"src":"6700:16:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"6682:34:28"},{"expression":{"arguments":[{"id":4076,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"6737:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4077,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"6748:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":4075,"name":"checkTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3918,"src":"6726:10:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_int24_$returns$__$","typeString":"function (int24,int24) pure"}},"id":4078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6726:32:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4079,"nodeType":"ExpressionStatement","src":"6726:32:28"},{"id":4257,"nodeType":"Block","src":"6769:2251:28","statements":[{"assignments":[4082],"declarations":[{"constant":false,"id":4082,"mutability":"mutable","name":"state","nameLocation":"6811:5:28","nodeType":"VariableDeclaration","scope":4257,"src":"6783:33:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState"},"typeName":{"id":4081,"nodeType":"UserDefinedTypeName","pathNode":{"id":4080,"name":"ModifyLiquidityState","nameLocations":["6783:20:28"],"nodeType":"IdentifierPath","referencedDeclaration":4044,"src":"6783:20:28"},"referencedDeclaration":4044,"src":"6783:20:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_storage_ptr","typeString":"struct Pool.ModifyLiquidityState"}},"visibility":"internal"}],"id":4083,"nodeType":"VariableDeclarationStatement","src":"6783:33:28"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4084,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"6888:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6906:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6888:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4184,"nodeType":"IfStatement","src":"6884:1188:28","trueBody":{"id":4183,"nodeType":"Block","src":"6909:1163:28","statements":[{"expression":{"id":4099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":4087,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"6928:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6934:12:28","memberName":"flippedLower","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"6928:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4090,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"6948:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6954:24:28","memberName":"liquidityGrossAfterLower","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"6948:30:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":4092,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6927:52:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint128_$","typeString":"tuple(bool,uint128)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4094,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"7013:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},{"id":4095,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"7019:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4096,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"7030:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"hexValue":"66616c7365","id":4097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7046:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4093,"name":"updateTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"7002:10:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_int24_$_t_int128_$_t_bool_$returns$_t_bool_$_t_uint128_$","typeString":"function (struct Pool.State storage pointer,int24,int128,bool) returns (bool,uint128)"}},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7002:50:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint128_$","typeString":"tuple(bool,uint128)"}},"src":"6927:125:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4100,"nodeType":"ExpressionStatement","src":"6927:125:28"},{"expression":{"id":4113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":4101,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"7071:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7077:12:28","memberName":"flippedUpper","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"7071:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4104,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"7091:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7097:24:28","memberName":"liquidityGrossAfterUpper","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"7091:30:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":4106,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7070:52:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint128_$","typeString":"tuple(bool,uint128)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4108,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"7136:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},{"id":4109,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"7142:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4110,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"7153:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"hexValue":"74727565","id":4111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7169:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4107,"name":"updateTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"7125:10:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_int24_$_t_int128_$_t_bool_$returns$_t_bool_$_t_uint128_$","typeString":"function (struct Pool.State storage pointer,int24,int128,bool) returns (bool,uint128)"}},"id":4112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7125:49:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint128_$","typeString":"tuple(bool,uint128)"}},"src":"7070:104:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4114,"nodeType":"ExpressionStatement","src":"7070:104:28"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4115,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"7279:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7297:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7279:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4154,"nodeType":"IfStatement","src":"7275:508:28","trueBody":{"id":4153,"nodeType":"Block","src":"7300:483:28","statements":[{"assignments":[4119],"declarations":[{"constant":false,"id":4119,"mutability":"mutable","name":"maxLiquidityPerTick","nameLocation":"7330:19:28","nodeType":"VariableDeclaration","scope":4153,"src":"7322:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4118,"name":"uint128","nodeType":"ElementaryTypeName","src":"7322:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":4124,"initialValue":{"arguments":[{"expression":{"id":4121,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"7385:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7392:11:28","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":4032,"src":"7385:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":4120,"name":"tickSpacingToMaxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5322,"src":"7352:32:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint128_$","typeString":"function (int24) pure returns (uint128)"}},"id":4123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7352:52:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7322:82:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4125,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"7430:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7436:24:28","memberName":"liquidityGrossAfterLower","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"7430:30:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4127,"name":"maxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"7463:19:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7430:52:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4138,"nodeType":"IfStatement","src":"7426:159:28","trueBody":{"id":4137,"nodeType":"Block","src":"7484:101:28","statements":[{"expression":{"arguments":[{"id":4134,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"7552:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":4129,"name":"TickLiquidityOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3812,"src":"7510:21:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$returns$_t_error_$","typeString":"function (int24) pure returns (error)"}},"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7532:8:28","memberName":"selector","nodeType":"MemberAccess","src":"7510:30:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7541:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2294,"src":"7510:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24) pure"}},"id":4135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7510:52:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4136,"nodeType":"ExpressionStatement","src":"7510:52:28"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4139,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"7610:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7616:24:28","memberName":"liquidityGrossAfterUpper","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"7610:30:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4141,"name":"maxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"7643:19:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7610:52:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4152,"nodeType":"IfStatement","src":"7606:159:28","trueBody":{"id":4151,"nodeType":"Block","src":"7664:101:28","statements":[{"expression":{"arguments":[{"id":4148,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"7732:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":4143,"name":"TickLiquidityOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3812,"src":"7690:21:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$returns$_t_error_$","typeString":"function (int24) pure returns (error)"}},"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:8:28","memberName":"selector","nodeType":"MemberAccess","src":"7690:30:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7721:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2294,"src":"7690:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24) pure"}},"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7690:52:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4150,"nodeType":"ExpressionStatement","src":"7690:52:28"}]}}]}},{"condition":{"expression":{"id":4155,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"7805:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7811:12:28","memberName":"flippedLower","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"7805:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4168,"nodeType":"IfStatement","src":"7801:120:28","trueBody":{"id":4167,"nodeType":"Block","src":"7825:96:28","statements":[{"expression":{"arguments":[{"id":4162,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"7872:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4163,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"7883:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7890:11:28","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":4032,"src":"7883:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":4157,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"7847:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7852:10:28","memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":3864,"src":"7847:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7863:8:28","memberName":"flipTick","nodeType":"MemberAccess","referencedDeclaration":8416,"src":"7847:24:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$attached_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24)"}},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7847:55:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4166,"nodeType":"ExpressionStatement","src":"7847:55:28"}]}},{"condition":{"expression":{"id":4169,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"7942:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7948:12:28","memberName":"flippedUpper","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"7942:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4182,"nodeType":"IfStatement","src":"7938:120:28","trueBody":{"id":4181,"nodeType":"Block","src":"7962:96:28","statements":[{"expression":{"arguments":[{"id":4176,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"8009:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4177,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"8020:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8027:11:28","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":4032,"src":"8020:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":4171,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"7984:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7989:10:28","memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":3864,"src":"7984:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8000:8:28","memberName":"flipTick","nodeType":"MemberAccess","referencedDeclaration":8416,"src":"7984:24:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$attached_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24)"}},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7984:55:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4180,"nodeType":"ExpressionStatement","src":"7984:55:28"}]}}]}},{"id":4233,"nodeType":"Block","src":"8086:595:28","statements":[{"assignments":[4186,4188],"declarations":[{"constant":false,"id":4186,"mutability":"mutable","name":"feeGrowthInside0X128","nameLocation":"8113:20:28","nodeType":"VariableDeclaration","scope":4233,"src":"8105:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4185,"name":"uint256","nodeType":"ElementaryTypeName","src":"8105:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4188,"mutability":"mutable","name":"feeGrowthInside1X128","nameLocation":"8143:20:28","nodeType":"VariableDeclaration","scope":4233,"src":"8135:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4187,"name":"uint256","nodeType":"ElementaryTypeName","src":"8135:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4194,"initialValue":{"arguments":[{"id":4190,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"8206:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},{"id":4191,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"8212:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4192,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"8223:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":4189,"name":"getFeeGrowthInside","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5207,"src":"8187:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_State_$3870_storage_ptr_$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct Pool.State storage pointer,int24,int24) view returns (uint256,uint256)"}},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8187:46:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8104:129:28"},{"assignments":[4199],"declarations":[{"constant":false,"id":4199,"mutability":"mutable","name":"position","nameLocation":"8275:8:28","nodeType":"VariableDeclaration","scope":4233,"src":"8252:31:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"},"typeName":{"id":4198,"nodeType":"UserDefinedTypeName","pathNode":{"id":4197,"name":"Position.State","nameLocations":["8252:8:28","8261:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":5433,"src":"8252:14:28"},"referencedDeclaration":5433,"src":"8252:14:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"}},"visibility":"internal"}],"id":4210,"initialValue":{"arguments":[{"expression":{"id":4203,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"8305:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8312:5:28","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4024,"src":"8305:12:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4205,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"8319:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4206,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"8330:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4207,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"8341:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams memory"}},"id":4208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8348:4:28","memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":4034,"src":"8341:11:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":4200,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"8286:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8291:9:28","memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":3869,"src":"8286:14:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$","typeString":"mapping(bytes32 => struct Position.State storage ref)"}},"id":4202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8301:3:28","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":5469,"src":"8286:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$_$_t_address_$_t_int24_$_t_int24_$_t_bytes32_$returns$_t_struct$_State_$5433_storage_ptr_$attached_to$_t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$_$","typeString":"function (mapping(bytes32 => struct Position.State storage ref),address,int24,int24,bytes32) view returns (struct Position.State storage pointer)"}},"id":4209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8286:67:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8252:101:28"},{"assignments":[4212,4214],"declarations":[{"constant":false,"id":4212,"mutability":"mutable","name":"feesOwed0","nameLocation":"8380:9:28","nodeType":"VariableDeclaration","scope":4233,"src":"8372:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4211,"name":"uint256","nodeType":"ElementaryTypeName","src":"8372:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4214,"mutability":"mutable","name":"feesOwed1","nameLocation":"8399:9:28","nodeType":"VariableDeclaration","scope":4233,"src":"8391:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4213,"name":"uint256","nodeType":"ElementaryTypeName","src":"8391:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4221,"initialValue":{"arguments":[{"id":4217,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"8448:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":4218,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"8464:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4219,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4188,"src":"8486:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4215,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"8432:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":4216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8441:6:28","memberName":"update","nodeType":"MemberAccess","referencedDeclaration":5574,"src":"8432:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$5433_storage_ptr_$_t_int128_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_struct$_State_$5433_storage_ptr_$","typeString":"function (struct Position.State storage pointer,int128,uint256,uint256) returns (uint256,uint256)"}},"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8432:75:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8371:136:28"},{"expression":{"id":4231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4222,"name":"feeDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"8597:8:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4224,"name":"feesOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4212,"src":"8623:9:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8633:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"8623:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8623:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4227,"name":"feesOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"8645:9:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8655:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"8645:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":4229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8645:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":4223,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"8608:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8608:58:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"8597:69:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":4232,"nodeType":"ExpressionStatement","src":"8597:69:28"}]},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4234,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"8759:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8776:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8759:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4256,"nodeType":"IfStatement","src":"8755:255:28","trueBody":{"id":4255,"nodeType":"Block","src":"8779:231:28","statements":[{"condition":{"expression":{"id":4237,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"8801:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4238,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8807:12:28","memberName":"flippedLower","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"8801:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4245,"nodeType":"IfStatement","src":"8797:91:28","trueBody":{"id":4244,"nodeType":"Block","src":"8821:67:28","statements":[{"expression":{"arguments":[{"id":4240,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"8853:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},{"id":4241,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"8859:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":4239,"name":"clearTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5360,"src":"8843:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_int24_$returns$__$","typeString":"function (struct Pool.State storage pointer,int24)"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4243,"nodeType":"ExpressionStatement","src":"8843:26:28"}]}},{"condition":{"expression":{"id":4246,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"8909:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityState_$4044_memory_ptr","typeString":"struct Pool.ModifyLiquidityState memory"}},"id":4247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8915:12:28","memberName":"flippedUpper","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"8909:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4254,"nodeType":"IfStatement","src":"8905:91:28","trueBody":{"id":4253,"nodeType":"Block","src":"8929:67:28","statements":[{"expression":{"arguments":[{"id":4249,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"8961:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},{"id":4250,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"8967:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":4248,"name":"clearTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5360,"src":"8951:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_int24_$returns$__$","typeString":"function (struct Pool.State storage pointer,int24)"}},"id":4251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8951:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4252,"nodeType":"ExpressionStatement","src":"8951:26:28"}]}}]}}]},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":4260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4258,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"9034:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9052:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9034:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4369,"nodeType":"IfStatement","src":"9030:1774:28","trueBody":{"id":4368,"nodeType":"Block","src":"9055:1749:28","statements":[{"assignments":[4263],"declarations":[{"constant":false,"id":4263,"mutability":"mutable","name":"_slot0","nameLocation":"9075:6:28","nodeType":"VariableDeclaration","scope":4368,"src":"9069:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":4262,"nodeType":"UserDefinedTypeName","pathNode":{"id":4261,"name":"Slot0","nameLocations":["9069:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"9069:5:28"},"referencedDeclaration":8632,"src":"9069:5:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"id":4266,"initialValue":{"expression":{"id":4264,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"9084:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9089:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"9084:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"nodeType":"VariableDeclarationStatement","src":"9069:25:28"},{"assignments":[4268,4270],"declarations":[{"constant":false,"id":4268,"mutability":"mutable","name":"tick","nameLocation":"9115:4:28","nodeType":"VariableDeclaration","scope":4368,"src":"9109:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4267,"name":"int24","nodeType":"ElementaryTypeName","src":"9109:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4270,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"9129:12:28","nodeType":"VariableDeclaration","scope":4368,"src":"9121:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4269,"name":"uint160","nodeType":"ElementaryTypeName","src":"9121:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":4278,"initialValue":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4271,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"9146:6:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9153:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":8672,"src":"9146:11:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_int24_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (int24)"}},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9146:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4274,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"9161:6:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9168:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"9161:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9161:21:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9145:38:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint160_$","typeString":"tuple(int24,uint160)"}},"nodeType":"VariableDeclarationStatement","src":"9108:75:28"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4279,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4268,"src":"9201:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4280,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"9208:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"9201:16:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":4305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4303,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4268,"src":"9761:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4304,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"9768:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"9761:16:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4365,"nodeType":"Block","src":"10262:532:28","statements":[{"expression":{"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4345,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"10512:5:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":4347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10556:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":4352,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"10662:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4350,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"10634:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10643:18:28","memberName":"getSqrtPriceAtTick","nodeType":"MemberAccess","referencedDeclaration":6164,"src":"10634:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":4353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10634:38:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":4356,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"10702:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4354,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"10674:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10683:18:28","memberName":"getSqrtPriceAtTick","nodeType":"MemberAccess","referencedDeclaration":6164,"src":"10674:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10674:38:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4358,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"10714:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":4348,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"10579:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":4349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10593:15:28","memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":8113,"src":"10579:29:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":4359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10579:171:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10751:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"10579:180:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":4361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10579:182:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":4346,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"10520:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10520:259:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"10512:267:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":4364,"nodeType":"ExpressionStatement","src":"10512:267:28"}]},"id":4366,"nodeType":"IfStatement","src":"9757:1037:28","trueBody":{"id":4344,"nodeType":"Block","src":"9779:477:28","statements":[{"expression":{"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4306,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"9797:5:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4310,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4270,"src":"9871:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":4313,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"9913:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4311,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"9885:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9894:18:28","memberName":"getSqrtPriceAtTick","nodeType":"MemberAccess","referencedDeclaration":6164,"src":"9885:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":4314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9885:38:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4315,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"9925:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":4308,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"9841:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9855:15:28","memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":8070,"src":"9841:29:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":4316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9841:99:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9966:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"9841:133:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9841:135:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":4323,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"10056:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4321,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"10028:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10037:18:28","memberName":"getSqrtPriceAtTick","nodeType":"MemberAccess","referencedDeclaration":6164,"src":"10028:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":4324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10028:38:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4325,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4270,"src":"10068:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4326,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"10082:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":4319,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"9998:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10012:15:28","memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":8113,"src":"9998:29:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9998:99:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10123:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"9998:133:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":4329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9998:135:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":4307,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"9805:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":4330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9805:346:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"9797:354:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":4332,"nodeType":"ExpressionStatement","src":"9797:354:28"},{"expression":{"id":4342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4333,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"10170:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10175:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3855,"src":"10170:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4338,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"10210:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10215:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3855,"src":"10210:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4340,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"10226:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":4336,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"10187:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$7623_$","typeString":"type(library LiquidityMath)"}},"id":4337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10201:8:28","memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":7622,"src":"10187:22:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":4341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10187:54:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10170:71:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4343,"nodeType":"ExpressionStatement","src":"10170:71:28"}]}},"id":4367,"nodeType":"IfStatement","src":"9197:1597:28","trueBody":{"id":4302,"nodeType":"Block","src":"9219:532:28","statements":[{"expression":{"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4282,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"9469:5:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":4288,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"9596:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4286,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"9568:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9577:18:28","memberName":"getSqrtPriceAtTick","nodeType":"MemberAccess","referencedDeclaration":6164,"src":"9568:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9568:38:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":4292,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4071,"src":"9636:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4290,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"9608:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9617:18:28","memberName":"getSqrtPriceAtTick","nodeType":"MemberAccess","referencedDeclaration":6164,"src":"9608:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9608:38:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":4294,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"9648:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":4284,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"9513:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":4285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9527:15:28","memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":8070,"src":"9513:29:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9513:171:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9685:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"9513:180:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":4297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9513:182:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"hexValue":"30","id":4298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9717:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4283,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"9477:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9477:259:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"9469:267:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":4301,"nodeType":"ExpressionStatement","src":"9469:267:28"}]}}]}}]},"documentation":{"id":4045,"nodeType":"StructuredDocumentation","src":"6022:383:28","text":"@notice Effect changes to a position in a pool\n @dev PoolManager checks that the pool is initialized before calling\n @param params the position details and the change to the position's liquidity to effect\n @return delta the deltas of the token balances of the pool, from the liquidity change\n @return feeDelta the fees generated by the liquidity range"},"id":4371,"implemented":true,"kind":"function","modifiers":[],"name":"modifyLiquidity","nameLocation":"6419:15:28","nodeType":"FunctionDefinition","parameters":{"id":4052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4048,"mutability":"mutable","name":"self","nameLocation":"6449:4:28","nodeType":"VariableDeclaration","scope":4371,"src":"6435:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":4047,"nodeType":"UserDefinedTypeName","pathNode":{"id":4046,"name":"State","nameLocations":["6435:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"6435:5:28"},"referencedDeclaration":3870,"src":"6435:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":4051,"mutability":"mutable","name":"params","nameLocation":"6484:6:28","nodeType":"VariableDeclaration","scope":4371,"src":"6455:35:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_memory_ptr","typeString":"struct Pool.ModifyLiquidityParams"},"typeName":{"id":4050,"nodeType":"UserDefinedTypeName","pathNode":{"id":4049,"name":"ModifyLiquidityParams","nameLocations":["6455:21:28"],"nodeType":"IdentifierPath","referencedDeclaration":4035,"src":"6455:21:28"},"referencedDeclaration":4035,"src":"6455:21:28","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyLiquidityParams_$4035_storage_ptr","typeString":"struct Pool.ModifyLiquidityParams"}},"visibility":"internal"}],"src":"6434:57:28"},"returnParameters":{"id":4059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4055,"mutability":"mutable","name":"delta","nameLocation":"6539:5:28","nodeType":"VariableDeclaration","scope":4371,"src":"6526:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":4054,"nodeType":"UserDefinedTypeName","pathNode":{"id":4053,"name":"BalanceDelta","nameLocations":["6526:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"6526:12:28"},"referencedDeclaration":6311,"src":"6526:12:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":4058,"mutability":"mutable","name":"feeDelta","nameLocation":"6559:8:28","nodeType":"VariableDeclaration","scope":4371,"src":"6546:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":4057,"nodeType":"UserDefinedTypeName","pathNode":{"id":4056,"name":"BalanceDelta","nameLocations":["6546:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"6546:12:28"},"referencedDeclaration":6311,"src":"6546:12:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"6525:43:28"},"scope":5409,"src":"6410:4400:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"canonicalName":"Pool.SwapResult","id":4378,"members":[{"constant":false,"id":4373,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"10988:12:28","nodeType":"VariableDeclaration","scope":4378,"src":"10980:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4372,"name":"uint160","nodeType":"ElementaryTypeName","src":"10980:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4375,"mutability":"mutable","name":"tick","nameLocation":"11070:4:28","nodeType":"VariableDeclaration","scope":4378,"src":"11064:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4374,"name":"int24","nodeType":"ElementaryTypeName","src":"11064:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4377,"mutability":"mutable","name":"liquidity","nameLocation":"11134:9:28","nodeType":"VariableDeclaration","scope":4378,"src":"11126:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4376,"name":"uint128","nodeType":"ElementaryTypeName","src":"11126:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"SwapResult","nameLocation":"10924:10:28","nodeType":"StructDefinition","scope":5409,"src":"10917:233:28","visibility":"public"},{"canonicalName":"Pool.StepComputations","id":4395,"members":[{"constant":false,"id":4380,"mutability":"mutable","name":"sqrtPriceStartX96","nameLocation":"11248:17:28","nodeType":"VariableDeclaration","scope":4395,"src":"11240:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4379,"name":"uint160","nodeType":"ElementaryTypeName","src":"11240:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4382,"mutability":"mutable","name":"tickNext","nameLocation":"11361:8:28","nodeType":"VariableDeclaration","scope":4395,"src":"11355:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4381,"name":"int24","nodeType":"ElementaryTypeName","src":"11355:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4384,"mutability":"mutable","name":"initialized","nameLocation":"11434:11:28","nodeType":"VariableDeclaration","scope":4395,"src":"11429:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4383,"name":"bool","nodeType":"ElementaryTypeName","src":"11429:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4386,"mutability":"mutable","name":"sqrtPriceNextX96","nameLocation":"11510:16:28","nodeType":"VariableDeclaration","scope":4395,"src":"11502:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4385,"name":"uint160","nodeType":"ElementaryTypeName","src":"11502:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4388,"mutability":"mutable","name":"amountIn","nameLocation":"11597:8:28","nodeType":"VariableDeclaration","scope":4395,"src":"11589:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4387,"name":"uint256","nodeType":"ElementaryTypeName","src":"11589:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4390,"mutability":"mutable","name":"amountOut","nameLocation":"11664:9:28","nodeType":"VariableDeclaration","scope":4395,"src":"11656:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4389,"name":"uint256","nodeType":"ElementaryTypeName","src":"11656:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4392,"mutability":"mutable","name":"feeAmount","nameLocation":"11732:9:28","nodeType":"VariableDeclaration","scope":4395,"src":"11724:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4391,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4394,"mutability":"mutable","name":"feeGrowthGlobalX128","nameLocation":"11850:19:28","nodeType":"VariableDeclaration","scope":4395,"src":"11842:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4393,"name":"uint256","nodeType":"ElementaryTypeName","src":"11842:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StepComputations","nameLocation":"11163:16:28","nodeType":"StructDefinition","scope":5409,"src":"11156:720:28","visibility":"public"},{"canonicalName":"Pool.SwapParams","id":4406,"members":[{"constant":false,"id":4397,"mutability":"mutable","name":"amountSpecified","nameLocation":"11917:15:28","nodeType":"VariableDeclaration","scope":4406,"src":"11910:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4396,"name":"int256","nodeType":"ElementaryTypeName","src":"11910:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4399,"mutability":"mutable","name":"tickSpacing","nameLocation":"11948:11:28","nodeType":"VariableDeclaration","scope":4406,"src":"11942:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4398,"name":"int24","nodeType":"ElementaryTypeName","src":"11942:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4401,"mutability":"mutable","name":"zeroForOne","nameLocation":"11974:10:28","nodeType":"VariableDeclaration","scope":4406,"src":"11969:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4400,"name":"bool","nodeType":"ElementaryTypeName","src":"11969:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4403,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"12002:17:28","nodeType":"VariableDeclaration","scope":4406,"src":"11994:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4402,"name":"uint160","nodeType":"ElementaryTypeName","src":"11994:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4405,"mutability":"mutable","name":"lpFeeOverride","nameLocation":"12036:13:28","nodeType":"VariableDeclaration","scope":4406,"src":"12029:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4404,"name":"uint24","nodeType":"ElementaryTypeName","src":"12029:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"SwapParams","nameLocation":"11889:10:28","nodeType":"StructDefinition","scope":5409,"src":"11882:174:28","visibility":"public"},{"body":{"id":5020,"nodeType":"Block","src":"12421:9430:28","statements":[{"assignments":[4428],"declarations":[{"constant":false,"id":4428,"mutability":"mutable","name":"slot0Start","nameLocation":"12437:10:28","nodeType":"VariableDeclaration","scope":5020,"src":"12431:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":4427,"nodeType":"UserDefinedTypeName","pathNode":{"id":4426,"name":"Slot0","nameLocations":["12431:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"12431:5:28"},"referencedDeclaration":8632,"src":"12431:5:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"id":4431,"initialValue":{"expression":{"id":4429,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"12450:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12455:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"12450:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"nodeType":"VariableDeclarationStatement","src":"12431:29:28"},{"assignments":[4433],"declarations":[{"constant":false,"id":4433,"mutability":"mutable","name":"zeroForOne","nameLocation":"12475:10:28","nodeType":"VariableDeclaration","scope":5020,"src":"12470:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4432,"name":"bool","nodeType":"ElementaryTypeName","src":"12470:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4436,"initialValue":{"expression":{"id":4434,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"12488:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12495:10:28","memberName":"zeroForOne","nodeType":"MemberAccess","referencedDeclaration":4401,"src":"12488:17:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12470:35:28"},{"assignments":[4438],"declarations":[{"constant":false,"id":4438,"mutability":"mutable","name":"protocolFee","nameLocation":"12524:11:28","nodeType":"VariableDeclaration","scope":5020,"src":"12516:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4437,"name":"uint256","nodeType":"ElementaryTypeName","src":"12516:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4451,"initialValue":{"condition":{"id":4439,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"12550:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4445,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"12609:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12620:11:28","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":8682,"src":"12609:22:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint24_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint24)"}},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12609:24:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12634:16:28","memberName":"getOneForZeroFee","nodeType":"MemberAccess","referencedDeclaration":7373,"src":"12609:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_uint16_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (uint16)"}},"id":4449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12609:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":4450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12550:102:28","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4440,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"12563:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12574:11:28","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":8682,"src":"12563:22:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint24_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint24)"}},"id":4442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12563:24:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":4443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12588:16:28","memberName":"getZeroForOneFee","nodeType":"MemberAccess","referencedDeclaration":7358,"src":"12563:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_uint16_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (uint16)"}},"id":4444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12563:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"12516:136:28"},{"assignments":[4453],"declarations":[{"constant":false,"id":4453,"mutability":"mutable","name":"amountSpecifiedRemaining","nameLocation":"12787:24:28","nodeType":"VariableDeclaration","scope":5020,"src":"12780:31:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4452,"name":"int256","nodeType":"ElementaryTypeName","src":"12780:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4456,"initialValue":{"expression":{"id":4454,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"12814:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12821:15:28","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"12814:22:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"12780:56:28"},{"assignments":[4458],"declarations":[{"constant":false,"id":4458,"mutability":"mutable","name":"amountCalculated","nameLocation":"12936:16:28","nodeType":"VariableDeclaration","scope":5020,"src":"12929:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4457,"name":"int256","nodeType":"ElementaryTypeName","src":"12929:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4460,"initialValue":{"hexValue":"30","id":4459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12955:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12929:27:28"},{"expression":{"id":4467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4461,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"13015:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13022:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"13015:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4464,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"13037:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13048:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"13037:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":4466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13037:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"13015:47:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":4468,"nodeType":"ExpressionStatement","src":"13015:47:28"},{"expression":{"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4469,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"13114:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13121:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"13114:11:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4472,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"13128:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13139:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":8672,"src":"13128:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_int24_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (int24)"}},"id":4474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13128:17:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"13114:31:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4476,"nodeType":"ExpressionStatement","src":"13114:31:28"},{"expression":{"id":4482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4477,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"13202:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13209:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"13202:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4480,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"13221:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4481,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13226:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3855,"src":"13221:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"13202:33:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4483,"nodeType":"ExpressionStatement","src":"13202:33:28"},{"id":4514,"nodeType":"Block","src":"13422:276:28","statements":[{"assignments":[4485],"declarations":[{"constant":false,"id":4485,"mutability":"mutable","name":"lpFee","nameLocation":"13443:5:28","nodeType":"VariableDeclaration","scope":4514,"src":"13436:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4484,"name":"uint24","nodeType":"ElementaryTypeName","src":"13436:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":4498,"initialValue":{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":4486,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"13451:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13458:13:28","memberName":"lpFeeOverride","nodeType":"MemberAccess","referencedDeclaration":4405,"src":"13451:20:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":4488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13472:10:28","memberName":"isOverride","nodeType":"MemberAccess","referencedDeclaration":3645,"src":"13451:31:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (bool)"}},"id":4489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13451:33:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4494,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"13574:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13585:5:28","memberName":"lpFee","nodeType":"MemberAccess","referencedDeclaration":8692,"src":"13574:16:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint24_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint24)"}},"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13574:18:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":4497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13451:141:28","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":4490,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"13503:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13510:13:28","memberName":"lpFeeOverride","nodeType":"MemberAccess","referencedDeclaration":4405,"src":"13503:20:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13524:29:28","memberName":"removeOverrideFlagAndValidate","nodeType":"MemberAccess","referencedDeclaration":3678,"src":"13503:50:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint24_$returns$_t_uint24_$attached_to$_t_uint24_$","typeString":"function (uint24) pure returns (uint24)"}},"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13503:52:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"VariableDeclarationStatement","src":"13436:156:28"},{"expression":{"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4499,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4421,"src":"13607:7:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4500,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4438,"src":"13617:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13632:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13617:16:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":4509,"name":"lpFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"13681:5:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"arguments":[{"id":4506,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4438,"src":"13651:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13644:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":4504,"name":"uint16","nodeType":"ElementaryTypeName","src":"13644:6:28","typeDescriptions":{}}},"id":4507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13644:19:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":4508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13664:16:28","memberName":"calculateSwapFee","nodeType":"MemberAccess","referencedDeclaration":7394,"src":"13644:36:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint16_$_t_uint24_$returns$_t_uint24_$attached_to$_t_uint16_$","typeString":"function (uint16,uint24) pure returns (uint24)"}},"id":4510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13644:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13617:70:28","trueExpression":{"id":4503,"name":"lpFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"13636:5:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"13607:80:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":4513,"nodeType":"ExpressionStatement","src":"13607:80:28"}]},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4515,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4421,"src":"13847:7:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":4516,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"13858:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapMath_$8366_$","typeString":"type(library SwapMath)"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13867:12:28","memberName":"MAX_SWAP_FEE","nodeType":"MemberAccess","referencedDeclaration":8125,"src":"13858:21:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13847:32:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4533,"nodeType":"IfStatement","src":"13843:200:28","trueBody":{"id":4532,"nodeType":"Block","src":"13881:162:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4519,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"13929:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13936:15:28","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"13929:22:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13954:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13929:26:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4531,"nodeType":"IfStatement","src":"13925:108:28","trueBody":{"id":4530,"nodeType":"Block","src":"13957:76:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":4523,"name":"InvalidFeeForExactOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"13975:21:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13997:8:28","memberName":"selector","nodeType":"MemberAccess","src":"13975:30:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14006:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"13975:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":4528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13975:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4529,"nodeType":"ExpressionStatement","src":"13975:43:28"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4534,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"14251:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14258:15:28","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"14251:22:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14277:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14251:27:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4545,"nodeType":"IfStatement","src":"14247:92:28","trueBody":{"expression":{"components":[{"expression":{"id":4538,"name":"BalanceDeltaLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"14288:19:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalanceDeltaLibrary_$6469_$","typeString":"type(library BalanceDeltaLibrary)"}},"id":4539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14308:10:28","memberName":"ZERO_DELTA","nodeType":"MemberAccess","referencedDeclaration":6448,"src":"14288:30:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},{"hexValue":"30","id":4540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14320:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":4541,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4421,"src":"14323:7:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":4542,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"14332:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}}],"id":4543,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14287:52:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_BalanceDelta_$6311_$_t_rational_0_by_1_$_t_uint24_$_t_struct$_SwapResult_$4378_memory_ptr_$","typeString":"tuple(BalanceDelta,int_const 0,uint24,struct Pool.SwapResult memory)"}},"functionReturnParameters":4425,"id":4544,"nodeType":"Return","src":"14280:59:28"}},{"condition":{"id":4546,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"14354:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4620,"nodeType":"Block","src":"14987:384:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4584,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"15005:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15012:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"15005:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4586,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"15033:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15044:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"15033:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15033:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"15005:53:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4603,"nodeType":"IfStatement","src":"15001:190:28","trueBody":{"id":4602,"nodeType":"Block","src":"15060:131:28","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4595,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"15124:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15135:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"15124:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":4597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15124:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":4598,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"15151:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15158:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"15151:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"id":4590,"name":"PriceLimitAlreadyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3825,"src":"15078:25:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint160_$_t_uint160_$returns$_t_error_$","typeString":"function (uint160,uint160) pure returns (error)"}},"id":4593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15104:8:28","memberName":"selector","nodeType":"MemberAccess","src":"15078:34:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15113:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2328,"src":"15078:45:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_uint160_$_t_uint160_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,uint160,uint160) pure"}},"id":4600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15078:98:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4601,"nodeType":"ExpressionStatement","src":"15078:98:28"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4604,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"15208:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4605,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15215:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"15208:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":4606,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"15236:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15245:14:28","memberName":"MAX_SQRT_PRICE","nodeType":"MemberAccess","referencedDeclaration":5800,"src":"15236:23:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"15208:51:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4619,"nodeType":"IfStatement","src":"15204:157:28","trueBody":{"id":4618,"nodeType":"Block","src":"15261:100:28","statements":[{"expression":{"arguments":[{"expression":{"id":4614,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"15321:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15328:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"15321:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"id":4609,"name":"PriceLimitOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3830,"src":"15279:21:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint160_$returns$_t_error_$","typeString":"function (uint160) pure returns (error)"}},"id":4612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15301:8:28","memberName":"selector","nodeType":"MemberAccess","src":"15279:30:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15310:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2304,"src":"15279:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_uint160_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,uint160) pure"}},"id":4616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15279:67:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4617,"nodeType":"ExpressionStatement","src":"15279:67:28"}]}}]},"id":4621,"nodeType":"IfStatement","src":"14350:1021:28","trueBody":{"id":4583,"nodeType":"Block","src":"14366:615:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4547,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"14384:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4548,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14391:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"14384:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4549,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"14412:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14423:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"14412:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14412:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"14384:53:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4566,"nodeType":"IfStatement","src":"14380:190:28","trueBody":{"id":4565,"nodeType":"Block","src":"14439:131:28","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4558,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"14503:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14514:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"14503:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":4560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14503:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":4561,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"14530:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4562,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14537:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"14530:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"id":4553,"name":"PriceLimitAlreadyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3825,"src":"14457:25:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint160_$_t_uint160_$returns$_t_error_$","typeString":"function (uint160,uint160) pure returns (error)"}},"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14483:8:28","memberName":"selector","nodeType":"MemberAccess","src":"14457:34:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14492:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2328,"src":"14457:45:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_uint160_$_t_uint160_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,uint160,uint160) pure"}},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14457:98:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4564,"nodeType":"ExpressionStatement","src":"14457:98:28"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4567,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"14818:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14825:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"14818:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":4569,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"14846:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14855:14:28","memberName":"MIN_SQRT_PRICE","nodeType":"MemberAccess","referencedDeclaration":5796,"src":"14846:23:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"14818:51:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4582,"nodeType":"IfStatement","src":"14814:157:28","trueBody":{"id":4581,"nodeType":"Block","src":"14871:100:28","statements":[{"expression":{"arguments":[{"expression":{"id":4577,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"14931:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14938:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"14931:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"id":4572,"name":"PriceLimitOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3830,"src":"14889:21:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint160_$returns$_t_error_$","typeString":"function (uint160) pure returns (error)"}},"id":4575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14911:8:28","memberName":"selector","nodeType":"MemberAccess","src":"14889:30:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14920:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2304,"src":"14889:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_uint160_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,uint160) pure"}},"id":4579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14889:67:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4580,"nodeType":"ExpressionStatement","src":"14889:67:28"}]}}]}},{"assignments":[4624],"declarations":[{"constant":false,"id":4624,"mutability":"mutable","name":"step","nameLocation":"15405:4:28","nodeType":"VariableDeclaration","scope":5020,"src":"15381:28:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations"},"typeName":{"id":4623,"nodeType":"UserDefinedTypeName","pathNode":{"id":4622,"name":"StepComputations","nameLocations":["15381:16:28"],"nodeType":"IdentifierPath","referencedDeclaration":4395,"src":"15381:16:28"},"referencedDeclaration":4395,"src":"15381:16:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_storage_ptr","typeString":"struct Pool.StepComputations"}},"visibility":"internal"}],"id":4625,"nodeType":"VariableDeclarationStatement","src":"15381:28:28"},{"expression":{"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4626,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"15419:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15424:19:28","memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":4394,"src":"15419:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":4629,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"15446:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":4632,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"15487:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15492:20:28","memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":3853,"src":"15487:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15446:66:28","trueExpression":{"expression":{"id":4630,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"15459:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15464:20:28","memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"15459:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15419:93:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4636,"nodeType":"ExpressionStatement","src":"15419:93:28"},{"body":{"id":4931,"nodeType":"Block","src":"15731:5152:28","statements":[{"expression":{"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4648,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"15745:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4650,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15750:17:28","memberName":"sqrtPriceStartX96","nodeType":"MemberAccess","referencedDeclaration":4380,"src":"15745:22:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4651,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"15770:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4652,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15777:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"15770:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"15745:44:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":4654,"nodeType":"ExpressionStatement","src":"15745:44:28"},{"expression":{"id":4670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":4655,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"15805:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15810:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"15805:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4658,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"15820:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15825:11:28","memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":4384,"src":"15820:16:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4660,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15804:33:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4664,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"15905:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15912:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"15905:11:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":4666,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"15918:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15925:11:28","memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":4399,"src":"15918:18:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4668,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"15938:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"expression":{"id":4661,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"15856:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15861:10:28","memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":3864,"src":"15856:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":4663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15872:32:28","memberName":"nextInitializedTickWithinOneWord","nodeType":"MemberAccess","referencedDeclaration":8597,"src":"15856:48:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$attached_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"}},"id":4669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15856:93:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"src":"15804:145:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4671,"nodeType":"ExpressionStatement","src":"15804:145:28"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4672,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16081:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16086:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"16081:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":4674,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"16098:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16107:8:28","memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":5776,"src":"16098:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"16081:34:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4685,"nodeType":"IfStatement","src":"16077:106:28","trueBody":{"id":4684,"nodeType":"Block","src":"16117:66:28","statements":[{"expression":{"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4677,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16135:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16140:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"16135:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4680,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"16151:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16160:8:28","memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":5776,"src":"16151:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"16135:33:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4683,"nodeType":"ExpressionStatement","src":"16135:33:28"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":4690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4686,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16200:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16205:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"16200:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":4688,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"16217:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16226:8:28","memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"16217:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"16200:34:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4699,"nodeType":"IfStatement","src":"16196:106:28","trueBody":{"id":4698,"nodeType":"Block","src":"16236:66:28","statements":[{"expression":{"id":4696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4691,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16254:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16259:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"16254:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4694,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"16270:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16279:8:28","memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"16270:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"16254:33:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4697,"nodeType":"ExpressionStatement","src":"16254:33:28"}]}},{"expression":{"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4700,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16363:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16368:16:28","memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":4386,"src":"16363:21:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4705,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16415:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16420:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"16415:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4703,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"16387:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16396:18:28","memberName":"getSqrtPriceAtTick","nodeType":"MemberAccess","referencedDeclaration":6164,"src":"16387:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":4707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16387:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"16363:66:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":4709,"nodeType":"ExpressionStatement","src":"16363:66:28"},{"expression":{"id":4737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":4710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"16564:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16571:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"16564:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":4713,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16585:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16590:8:28","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4388,"src":"16585:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4715,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16600:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16605:9:28","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4390,"src":"16600:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4717,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16616:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16621:9:28","memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"16616:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4719,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16563:68:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint160,uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4722,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"16676:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16683:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"16676:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":4726,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"16741:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4727,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16753:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16758:16:28","memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":4386,"src":"16753:21:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":4729,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"16776:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16783:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"16776:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":4724,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"16713:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapMath_$8366_$","typeString":"type(library SwapMath)"}},"id":4725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16722:18:28","memberName":"getSqrtPriceTarget","nodeType":"MemberAccess","referencedDeclaration":8139,"src":"16713:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint160_$_t_uint160_$returns$_t_uint160_$","typeString":"function (bool,uint160,uint160) pure returns (uint160)"}},"id":4731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16713:88:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":4732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"16819:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16826:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"16819:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4734,"name":"amountSpecifiedRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"16853:24:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4735,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4421,"src":"16895:7:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":4720,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"16634:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapMath_$8366_$","typeString":"type(library SwapMath)"}},"id":4721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16643:15:28","memberName":"computeSwapStep","nodeType":"MemberAccess","referencedDeclaration":8365,"src":"16634:24:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_int256_$_t_uint24_$returns$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)"}},"id":4736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16634:282:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint160,uint256,uint256,uint256)"}},"src":"16563:353:28","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4738,"nodeType":"ExpressionStatement","src":"16563:353:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4739,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"16965:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16972:15:28","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"16965:22:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16990:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16965:26:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4782,"nodeType":"Block","src":"17216:313:28","statements":[{"id":4774,"nodeType":"UncheckedBlock","src":"17330:122:28","statements":[{"expression":{"id":4772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4763,"name":"amountSpecifiedRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"17362:24:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4764,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"17391:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17396:8:28","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4388,"src":"17391:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":4766,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"17407:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17412:9:28","memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"17407:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17391:30:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4769,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17390:32:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17423:8:28","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"17390:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17390:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17362:71:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4773,"nodeType":"ExpressionStatement","src":"17362:71:28"}]},{"expression":{"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4775,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"17469:16:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":4776,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"17489:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4777,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17494:9:28","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4390,"src":"17489:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17504:8:28","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"17489:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17489:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17469:45:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4781,"nodeType":"ExpressionStatement","src":"17469:45:28"}]},"id":4783,"nodeType":"IfStatement","src":"16961:568:28","trueBody":{"id":4762,"nodeType":"Block","src":"16993:217:28","statements":[{"id":4750,"nodeType":"UncheckedBlock","src":"17011:104:28","statements":[{"expression":{"id":4748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4743,"name":"amountSpecifiedRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"17043:24:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":4744,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"17071:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17076:9:28","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4390,"src":"17071:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17086:8:28","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"17071:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17071:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17043:53:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4749,"nodeType":"ExpressionStatement","src":"17043:53:28"}]},{"expression":{"id":4760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4751,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"17132:16:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4752,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"17153:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17158:8:28","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4388,"src":"17153:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":4754,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"17169:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17174:9:28","memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"17169:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17153:30:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17152:32:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17185:8:28","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"17152:41:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":4759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17152:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17132:63:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4761,"nodeType":"ExpressionStatement","src":"17132:63:28"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4784,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4438,"src":"17664:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17678:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17664:15:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4820,"nodeType":"IfStatement","src":"17660:951:28","trueBody":{"id":4819,"nodeType":"Block","src":"17681:930:28","statements":[{"id":4818,"nodeType":"UncheckedBlock","src":"17699:898:28","statements":[{"assignments":[4788],"declarations":[{"constant":false,"id":4788,"mutability":"mutable","name":"delta","nameLocation":"18151:5:28","nodeType":"VariableDeclaration","scope":4818,"src":"18143:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4787,"name":"uint256","nodeType":"ElementaryTypeName","src":"18143:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4807,"initialValue":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4789,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4421,"src":"18160:7:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4790,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4438,"src":"18171:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18160:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4792,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18159:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4795,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"18318:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18323:8:28","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4388,"src":"18318:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":4797,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"18334:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18339:9:28","memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"18334:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18318:30:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4800,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18317:32:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4801,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4438,"src":"18352:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18317:46:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":4803,"name":"ProtocolFeeLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"18366:18:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeLibrary_$7395_$","typeString":"type(library ProtocolFeeLibrary)"}},"id":4804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18385:16:28","memberName":"PIPS_DENOMINATOR","nodeType":"MemberAccess","referencedDeclaration":7343,"src":"18366:35:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18317:84:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18159:242:28","trueExpression":{"expression":{"id":4793,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"18210:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18215:9:28","memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"18210:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18143:258:28"},{"expression":{"id":4812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4808,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"18508:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18513:9:28","memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"18508:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4811,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"18526:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18508:23:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4813,"nodeType":"ExpressionStatement","src":"18508:23:28"},{"expression":{"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4814,"name":"amountToProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4419,"src":"18553:16:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4815,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"18573:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18553:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4817,"nodeType":"ExpressionStatement","src":"18553:25:28"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4821,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"18670:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18677:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"18670:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18689:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18670:20:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4841,"nodeType":"IfStatement","src":"18666:382:28","trueBody":{"id":4840,"nodeType":"Block","src":"18692:356:28","statements":[{"id":4839,"nodeType":"UncheckedBlock","src":"18710:324:28","statements":[{"expression":{"id":4837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4825,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"18886:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18891:19:28","memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":4394,"src":"18886:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"expression":{"id":4830,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"18962:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18967:9:28","memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"18962:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4832,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"18978:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$7607_$","typeString":"type(library FixedPoint128)"}},"id":4833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18992:4:28","memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":7606,"src":"18978:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4834,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"18998:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19005:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"18998:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":4828,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"18938:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$8628_$","typeString":"type(library UnsafeMath)"}},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18949:12:28","memberName":"simpleMulDiv","nodeType":"MemberAccess","referencedDeclaration":8627,"src":"18938:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18938:77:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18886:129:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4838,"nodeType":"ExpressionStatement","src":"18886:129:28"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4842,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"19488:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19495:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"19488:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4844,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"19511:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19516:16:28","memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":4386,"src":"19511:21:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"19488:44:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20611:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20618:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"20611:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":4915,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"20634:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20639:17:28","memberName":"sqrtPriceStartX96","nodeType":"MemberAccess","referencedDeclaration":4380,"src":"20634:22:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"20611:45:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4929,"nodeType":"IfStatement","src":"20607:266:28","trueBody":{"id":4928,"nodeType":"Block","src":"20658:215:28","statements":[{"expression":{"id":4926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4918,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20796:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20803:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"20796:11:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4923,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20838:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20845:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"20838:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":4921,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"20810:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":4922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20819:18:28","memberName":"getTickAtSqrtPrice","nodeType":"MemberAccess","referencedDeclaration":6304,"src":"20810:27:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_int24_$","typeString":"function (uint160) pure returns (int24)"}},"id":4925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20810:48:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"20796:62:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4927,"nodeType":"ExpressionStatement","src":"20796:62:28"}]}},"id":4930,"nodeType":"IfStatement","src":"19484:1389:28","trueBody":{"id":4912,"nodeType":"Block","src":"19534:1067:28","statements":[{"condition":{"expression":{"id":4847,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"19627:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19632:11:28","memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":4384,"src":"19627:16:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4897,"nodeType":"IfStatement","src":"19623:835:28","trueBody":{"id":4896,"nodeType":"Block","src":"19645:813:28","statements":[{"assignments":[4850,4852],"declarations":[{"constant":false,"id":4850,"mutability":"mutable","name":"feeGrowthGlobal0X128","nameLocation":"19676:20:28","nodeType":"VariableDeclaration","scope":4896,"src":"19668:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4849,"name":"uint256","nodeType":"ElementaryTypeName","src":"19668:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4852,"mutability":"mutable","name":"feeGrowthGlobal1X128","nameLocation":"19706:20:28","nodeType":"VariableDeclaration","scope":4896,"src":"19698:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4851,"name":"uint256","nodeType":"ElementaryTypeName","src":"19698:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4865,"initialValue":{"condition":{"id":4853,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"19730:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"expression":{"id":4859,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"19848:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19853:20:28","memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"19848:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4861,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"19875:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19880:19:28","memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":4394,"src":"19875:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4863,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19847:53:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19730:170:28","trueExpression":{"components":[{"expression":{"id":4854,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"19768:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19773:19:28","memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":4394,"src":"19768:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4856,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"19794:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19799:20:28","memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":3853,"src":"19794:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4858,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19767:53:28","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":"19667:233:28"},{"assignments":[4867],"declarations":[{"constant":false,"id":4867,"mutability":"mutable","name":"liquidityNet","nameLocation":"19929:12:28","nodeType":"VariableDeclaration","scope":4896,"src":"19922:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4866,"name":"int128","nodeType":"ElementaryTypeName","src":"19922:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":4876,"initialValue":{"arguments":[{"id":4870,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"19983:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},{"expression":{"id":4871,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"19989:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19994:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"19989:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4873,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4850,"src":"20004:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4874,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"20026:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4868,"name":"Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"19968:4:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pool_$5409_$","typeString":"type(library Pool)"}},"id":4869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19973:9:28","memberName":"crossTick","nodeType":"MemberAccess","referencedDeclaration":5408,"src":"19968:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_State_$3870_storage_ptr_$_t_int24_$_t_uint256_$_t_uint256_$returns$_t_int128_$","typeString":"function (struct Pool.State storage pointer,int24,uint256,uint256) returns (int128)"}},"id":4875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19968:79:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"19922:125:28"},{"id":4884,"nodeType":"UncheckedBlock","src":"20241:103:28","statements":[{"condition":{"id":4877,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"20281:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4883,"nodeType":"IfStatement","src":"20277:44:28","trueBody":{"expression":{"id":4881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4878,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"20293:12:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"20308:13:28","subExpression":{"id":4879,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"20309:12:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"20293:28:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":4882,"nodeType":"ExpressionStatement","src":"20293:28:28"}}]},{"expression":{"id":4894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4885,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20366:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20373:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"20366:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4890,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20408:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20415:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"20408:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4892,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"20426:12:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":4888,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"20385:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$7623_$","typeString":"type(library LiquidityMath)"}},"id":4889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20399:8:28","memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":7622,"src":"20385:22:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":4893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20385:54:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"20366:73:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4895,"nodeType":"ExpressionStatement","src":"20366:73:28"}]}},{"id":4911,"nodeType":"UncheckedBlock","src":"20476:111:28","statements":[{"expression":{"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20508:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20515:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"20508:11:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":4901,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"20522:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":4906,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"20555:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20560:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"20555:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"20522:46:28","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4902,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"20535:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20540:8:28","memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"20535:13:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20551:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20535:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"20508:60:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4910,"nodeType":"ExpressionStatement","src":"20508:60:28"}]}]}}]},"condition":{"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15646:83:28","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4637,"name":"amountSpecifiedRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"15648:24:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15676:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15648:29:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4640,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"15681:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15688:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"15681:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4642,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"15704:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15711:17:28","memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"15704:24:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"15681:47:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15648:80:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4646,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15647:82:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4932,"nodeType":"WhileStatement","src":"15639:5244:28"},{"expression":{"id":4945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4933,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"20893:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20898:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"20893:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4942,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20954:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20961:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":4373,"src":"20954:19:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"expression":{"id":4938,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"20925:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20932:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"20925:11:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":4936,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"20906:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20917:7:28","memberName":"setTick","nodeType":"MemberAccess","referencedDeclaration":8718,"src":"20906:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$_t_int24_$returns$_t_userDefinedValueType$_Slot0_$8632_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0,int24) pure returns (Slot0)"}},"id":4940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20906:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20938:15:28","memberName":"setSqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8705,"src":"20906:47:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$_t_uint160_$returns$_t_userDefinedValueType$_Slot0_$8632_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0,uint160) pure returns (Slot0)"}},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20906:68:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"src":"20893:81:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":4946,"nodeType":"ExpressionStatement","src":"20893:81:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4947,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"21031:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21036:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3855,"src":"21031:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":4949,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"21049:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21056:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"21049:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21031:34:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4959,"nodeType":"IfStatement","src":"21027:73:28","trueBody":{"expression":{"id":4957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4952,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"21067:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21072:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3855,"src":"21067:14:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4955,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"21084:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult memory"}},"id":4956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21091:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":4377,"src":"21084:16:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21067:33:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4958,"nodeType":"ExpressionStatement","src":"21067:33:28"}},{"condition":{"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21151:11:28","subExpression":{"id":4960,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"21152:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4977,"nodeType":"Block","src":"21247:77:28","statements":[{"expression":{"id":4975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4970,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"21261:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21266:20:28","memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"21261:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4973,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"21289:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21294:19:28","memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":4394,"src":"21289:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21261:52:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4976,"nodeType":"ExpressionStatement","src":"21261:52:28"}]},"id":4978,"nodeType":"IfStatement","src":"21147:177:28","trueBody":{"id":4969,"nodeType":"Block","src":"21164:77:28","statements":[{"expression":{"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":4962,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"21178:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":4964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21183:20:28","memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":3853,"src":"21178:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4965,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"21206:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$4395_memory_ptr","typeString":"struct Pool.StepComputations memory"}},"id":4966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21211:19:28","memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":4394,"src":"21206:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21178:52:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4968,"nodeType":"ExpressionStatement","src":"21178:52:28"}]}},{"id":5019,"nodeType":"UncheckedBlock","src":"21334:511:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4979,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"21405:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4980,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"21420:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21427:15:28","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"21420:22:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21445:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21420:26:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4984,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21419:28:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21405:42:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5017,"nodeType":"Block","src":"21645:190:28","statements":[{"expression":{"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5002,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4417,"src":"21663:9:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5004,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"21712:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":5005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21719:15:28","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"21712:22:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5006,"name":"amountSpecifiedRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"21737:24:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21712:49:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5008,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21711:51:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21763:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"21711:60:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":5010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21711:62:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5011,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"21775:16:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21792:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"21775:25:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":5013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21775:27:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":5003,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"21675:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21675:145:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"21663:157:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":5016,"nodeType":"ExpressionStatement","src":"21663:157:28"}]},"id":5018,"nodeType":"IfStatement","src":"21401:434:28","trueBody":{"id":5001,"nodeType":"Block","src":"21449:190:28","statements":[{"expression":{"id":4999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4986,"name":"swapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4417,"src":"21467:9:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4988,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"21515:16:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21532:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"21515:25:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":4990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21515:27:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4991,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"21545:6:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams memory"}},"id":4992,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21552:15:28","memberName":"amountSpecified","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"21545:22:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4993,"name":"amountSpecifiedRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"21570:24:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21545:49:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4995,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21544:51:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21596:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"21544:60:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":4997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21544:62:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":4987,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"21479:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":4998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21479:145:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"21467:157:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":5000,"nodeType":"ExpressionStatement","src":"21467:157:28"}]}}]}]},"documentation":{"id":4407,"nodeType":"StructuredDocumentation","src":"12062:164:28","text":"@notice Executes a swap against the state, and returns the amount deltas of the pool\n @dev PoolManager checks that the pool is initialized before calling"},"id":5021,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nameLocation":"12240:4:28","nodeType":"FunctionDefinition","parameters":{"id":4414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4410,"mutability":"mutable","name":"self","nameLocation":"12259:4:28","nodeType":"VariableDeclaration","scope":5021,"src":"12245:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":4409,"nodeType":"UserDefinedTypeName","pathNode":{"id":4408,"name":"State","nameLocations":["12245:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"12245:5:28"},"referencedDeclaration":3870,"src":"12245:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":4413,"mutability":"mutable","name":"params","nameLocation":"12283:6:28","nodeType":"VariableDeclaration","scope":5021,"src":"12265:24:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_memory_ptr","typeString":"struct Pool.SwapParams"},"typeName":{"id":4412,"nodeType":"UserDefinedTypeName","pathNode":{"id":4411,"name":"SwapParams","nameLocations":["12265:10:28"],"nodeType":"IdentifierPath","referencedDeclaration":4406,"src":"12265:10:28"},"referencedDeclaration":4406,"src":"12265:10:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapParams_$4406_storage_ptr","typeString":"struct Pool.SwapParams"}},"visibility":"internal"}],"src":"12244:46:28"},"returnParameters":{"id":4425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4417,"mutability":"mutable","name":"swapDelta","nameLocation":"12338:9:28","nodeType":"VariableDeclaration","scope":5021,"src":"12325:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":4416,"nodeType":"UserDefinedTypeName","pathNode":{"id":4415,"name":"BalanceDelta","nameLocations":["12325:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"12325:12:28"},"referencedDeclaration":6311,"src":"12325:12:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":4419,"mutability":"mutable","name":"amountToProtocol","nameLocation":"12357:16:28","nodeType":"VariableDeclaration","scope":5021,"src":"12349:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4418,"name":"uint256","nodeType":"ElementaryTypeName","src":"12349:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4421,"mutability":"mutable","name":"swapFee","nameLocation":"12382:7:28","nodeType":"VariableDeclaration","scope":5021,"src":"12375:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4420,"name":"uint24","nodeType":"ElementaryTypeName","src":"12375:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4424,"mutability":"mutable","name":"result","nameLocation":"12409:6:28","nodeType":"VariableDeclaration","scope":5021,"src":"12391:24:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_memory_ptr","typeString":"struct Pool.SwapResult"},"typeName":{"id":4423,"nodeType":"UserDefinedTypeName","pathNode":{"id":4422,"name":"SwapResult","nameLocations":["12391:10:28"],"nodeType":"IdentifierPath","referencedDeclaration":4378,"src":"12391:10:28"},"referencedDeclaration":4378,"src":"12391:10:28","typeDescriptions":{"typeIdentifier":"t_struct$_SwapResult_$4378_storage_ptr","typeString":"struct Pool.SwapResult"}},"visibility":"internal"}],"src":"12324:92:28"},"scope":5409,"src":"12231:9620:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5101,"nodeType":"Block","src":"22046:768:28","statements":[{"assignments":[5036],"declarations":[{"constant":false,"id":5036,"mutability":"mutable","name":"liquidity","nameLocation":"22064:9:28","nodeType":"VariableDeclaration","scope":5101,"src":"22056:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5035,"name":"uint128","nodeType":"ElementaryTypeName","src":"22056:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5039,"initialValue":{"expression":{"id":5037,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"22076:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22082:9:28","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3855,"src":"22076:15:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"22056:35:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5040,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"22105:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22118:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22105:14:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5050,"nodeType":"IfStatement","src":"22101:66:28","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5043,"name":"NoLiquidityToReceiveFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"22121:24:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22146:8:28","memberName":"selector","nodeType":"MemberAccess","src":"22121:33:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22155:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"22121:44:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22121:46:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5049,"nodeType":"ExpressionStatement","src":"22121:46:28"}},{"id":5100,"nodeType":"UncheckedBlock","src":"22177:631:28","statements":[{"expression":{"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5051,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"22273:5:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"22296:21:28","subExpression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5053,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5027,"src":"22298:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22306:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"22298:16:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":5055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22298:18:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":5056,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22297:20:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":5062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"22319:21:28","subExpression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5058,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"22321:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22329:8:28","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5750,"src":"22321:16:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int128)"}},"id":5060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22321:18:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":5061,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22320:20:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":5052,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"22281:14:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22281:60:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"src":"22273:68:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"id":5065,"nodeType":"ExpressionStatement","src":"22273:68:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5066,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5027,"src":"22503:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22513:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22503:11:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5082,"nodeType":"IfStatement","src":"22499:143:28","trueBody":{"id":5081,"nodeType":"Block","src":"22516:126:28","statements":[{"expression":{"id":5079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5069,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"22534:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22540:20:28","memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"22534:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":5074,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5027,"src":"22588:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5075,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"22597:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$7607_$","typeString":"type(library FixedPoint128)"}},"id":5076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22611:4:28","memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":7606,"src":"22597:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5077,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"22617:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":5072,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"22564:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$8628_$","typeString":"type(library UnsafeMath)"}},"id":5073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22575:12:28","memberName":"simpleMulDiv","nodeType":"MemberAccess","referencedDeclaration":8627,"src":"22564:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22564:63:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22534:93:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5080,"nodeType":"ExpressionStatement","src":"22534:93:28"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5083,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"22659:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22669:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22659:11:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5099,"nodeType":"IfStatement","src":"22655:143:28","trueBody":{"id":5098,"nodeType":"Block","src":"22672:126:28","statements":[{"expression":{"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5086,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"22690:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22696:20:28","memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":3853,"src":"22690:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":5091,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"22744:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5092,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"22753:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$7607_$","typeString":"type(library FixedPoint128)"}},"id":5093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22767:4:28","memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":7606,"src":"22753:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5094,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"22773:9:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":5089,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"22720:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$8628_$","typeString":"type(library UnsafeMath)"}},"id":5090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22731:12:28","memberName":"simpleMulDiv","nodeType":"MemberAccess","referencedDeclaration":8627,"src":"22720:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22720:63:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22690:93:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5097,"nodeType":"ExpressionStatement","src":"22690:93:28"}]}}]}]},"documentation":{"id":5022,"nodeType":"StructuredDocumentation","src":"21857:75:28","text":"@notice Donates the given amount of currency0 and currency1 to the pool"},"id":5102,"implemented":true,"kind":"function","modifiers":[],"name":"donate","nameLocation":"21946:6:28","nodeType":"FunctionDefinition","parameters":{"id":5030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5025,"mutability":"mutable","name":"state","nameLocation":"21967:5:28","nodeType":"VariableDeclaration","scope":5102,"src":"21953:19:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":5024,"nodeType":"UserDefinedTypeName","pathNode":{"id":5023,"name":"State","nameLocations":["21953:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"21953:5:28"},"referencedDeclaration":3870,"src":"21953:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":5027,"mutability":"mutable","name":"amount0","nameLocation":"21982:7:28","nodeType":"VariableDeclaration","scope":5102,"src":"21974:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5026,"name":"uint256","nodeType":"ElementaryTypeName","src":"21974:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5029,"mutability":"mutable","name":"amount1","nameLocation":"21999:7:28","nodeType":"VariableDeclaration","scope":5102,"src":"21991:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5028,"name":"uint256","nodeType":"ElementaryTypeName","src":"21991:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21952:55:28"},"returnParameters":{"id":5034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5033,"mutability":"mutable","name":"delta","nameLocation":"22039:5:28","nodeType":"VariableDeclaration","scope":5102,"src":"22026:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":5032,"nodeType":"UserDefinedTypeName","pathNode":{"id":5031,"name":"BalanceDelta","nameLocations":["22026:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"22026:12:28"},"referencedDeclaration":6311,"src":"22026:12:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"22025:20:28"},"scope":5409,"src":"21937:877:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5206,"nodeType":"Block","src":"23493:1010:28","statements":[{"assignments":[5119],"declarations":[{"constant":false,"id":5119,"mutability":"mutable","name":"lower","nameLocation":"23520:5:28","nodeType":"VariableDeclaration","scope":5206,"src":"23503:22:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"},"typeName":{"id":5118,"nodeType":"UserDefinedTypeName","pathNode":{"id":5117,"name":"TickInfo","nameLocations":["23503:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":3845,"src":"23503:8:28"},"referencedDeclaration":3845,"src":"23503:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"}},"visibility":"internal"}],"id":5124,"initialValue":{"baseExpression":{"expression":{"id":5120,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5106,"src":"23528:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23533:5:28","memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3860,"src":"23528:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_TickInfo_$3845_storage_$","typeString":"mapping(int24 => struct Pool.TickInfo storage ref)"}},"id":5123,"indexExpression":{"id":5122,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"23539:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23528:21:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage","typeString":"struct Pool.TickInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"23503:46:28"},{"assignments":[5127],"declarations":[{"constant":false,"id":5127,"mutability":"mutable","name":"upper","nameLocation":"23576:5:28","nodeType":"VariableDeclaration","scope":5206,"src":"23559:22:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"},"typeName":{"id":5126,"nodeType":"UserDefinedTypeName","pathNode":{"id":5125,"name":"TickInfo","nameLocations":["23559:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":3845,"src":"23559:8:28"},"referencedDeclaration":3845,"src":"23559:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"}},"visibility":"internal"}],"id":5132,"initialValue":{"baseExpression":{"expression":{"id":5128,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5106,"src":"23584:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23589:5:28","memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3860,"src":"23584:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_TickInfo_$3845_storage_$","typeString":"mapping(int24 => struct Pool.TickInfo storage ref)"}},"id":5131,"indexExpression":{"id":5130,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5110,"src":"23595:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23584:21:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage","typeString":"struct Pool.TickInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"23559:46:28"},{"assignments":[5134],"declarations":[{"constant":false,"id":5134,"mutability":"mutable","name":"tickCurrent","nameLocation":"23621:11:28","nodeType":"VariableDeclaration","scope":5206,"src":"23615:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5133,"name":"int24","nodeType":"ElementaryTypeName","src":"23615:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":5139,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5135,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5106,"src":"23635:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23640:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"23635:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":5137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23646:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":8672,"src":"23635:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_int24_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (int24)"}},"id":5138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23635:17:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"23615:37:28"},{"id":5205,"nodeType":"UncheckedBlock","src":"23663:834:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5140,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5134,"src":"23691:11:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5141,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"23705:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"23691:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":5162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5160,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5134,"src":"23937:11:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5161,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5110,"src":"23952:9:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"23937:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5202,"nodeType":"Block","src":"24180:307:28","statements":[{"expression":{"id":5189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5180,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"24198:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5181,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5106,"src":"24241:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24246:20:28","memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"24241:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5183,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"24269:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24275:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"24269:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24241:55:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5186,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"24299:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24305:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"24299:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24241:85:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24198:128:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5190,"nodeType":"ExpressionStatement","src":"24198:128:28"},{"expression":{"id":5200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5191,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"24344:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5192,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5106,"src":"24387:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24392:20:28","memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":3853,"src":"24387:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5194,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"24415:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5195,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24421:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"24415:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24387:55:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5197,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"24445:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24451:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"24445:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24387:85:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24344:128:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5201,"nodeType":"ExpressionStatement","src":"24344:128:28"}]},"id":5203,"nodeType":"IfStatement","src":"23933:554:28","trueBody":{"id":5179,"nodeType":"Block","src":"23963:211:28","statements":[{"expression":{"id":5169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5163,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"23981:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5164,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"24004:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24010:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"24004:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5166,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"24034:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24040:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"24034:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24004:57:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23981:80:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5170,"nodeType":"ExpressionStatement","src":"23981:80:28"},{"expression":{"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5171,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"24079:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5172,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"24102:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24108:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"24102:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5174,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"24132:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24138:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"24132:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24102:57:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24079:80:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5178,"nodeType":"ExpressionStatement","src":"24079:80:28"}]}},"id":5204,"nodeType":"IfStatement","src":"23687:800:28","trueBody":{"id":5159,"nodeType":"Block","src":"23716:211:28","statements":[{"expression":{"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5143,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"23734:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5144,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"23757:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23763:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"23757:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5146,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"23787:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5147,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23793:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"23787:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23757:57:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23734:80:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5150,"nodeType":"ExpressionStatement","src":"23734:80:28"},{"expression":{"id":5157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5151,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"23832:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5152,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"23855:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23861:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"23855:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5154,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"23885:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23891:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"23885:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23855:57:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23832:80:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5158,"nodeType":"ExpressionStatement","src":"23832:80:28"}]}}]}]},"documentation":{"id":5103,"nodeType":"StructuredDocumentation","src":"22820:475:28","text":"@notice Retrieves fee growth data\n @param self The Pool state struct\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @return feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n @return feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries"},"id":5207,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeGrowthInside","nameLocation":"23309:18:28","nodeType":"FunctionDefinition","parameters":{"id":5111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5106,"mutability":"mutable","name":"self","nameLocation":"23342:4:28","nodeType":"VariableDeclaration","scope":5207,"src":"23328:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":5105,"nodeType":"UserDefinedTypeName","pathNode":{"id":5104,"name":"State","nameLocations":["23328:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"23328:5:28"},"referencedDeclaration":3870,"src":"23328:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":5108,"mutability":"mutable","name":"tickLower","nameLocation":"23354:9:28","nodeType":"VariableDeclaration","scope":5207,"src":"23348:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5107,"name":"int24","nodeType":"ElementaryTypeName","src":"23348:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5110,"mutability":"mutable","name":"tickUpper","nameLocation":"23371:9:28","nodeType":"VariableDeclaration","scope":5207,"src":"23365:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5109,"name":"int24","nodeType":"ElementaryTypeName","src":"23365:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"23327:54:28"},"returnParameters":{"id":5116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5113,"mutability":"mutable","name":"feeGrowthInside0X128","nameLocation":"23437:20:28","nodeType":"VariableDeclaration","scope":5207,"src":"23429:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5112,"name":"uint256","nodeType":"ElementaryTypeName","src":"23429:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5115,"mutability":"mutable","name":"feeGrowthInside1X128","nameLocation":"23467:20:28","nodeType":"VariableDeclaration","scope":5207,"src":"23459:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5114,"name":"uint256","nodeType":"ElementaryTypeName","src":"23459:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23428:60:28"},"scope":5409,"src":"23300:1203:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5301,"nodeType":"Block","src":"25409:1762:28","statements":[{"assignments":[5226],"declarations":[{"constant":false,"id":5226,"mutability":"mutable","name":"info","nameLocation":"25436:4:28","nodeType":"VariableDeclaration","scope":5301,"src":"25419:21:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"},"typeName":{"id":5225,"nodeType":"UserDefinedTypeName","pathNode":{"id":5224,"name":"TickInfo","nameLocations":["25419:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":3845,"src":"25419:8:28"},"referencedDeclaration":3845,"src":"25419:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"}},"visibility":"internal"}],"id":5231,"initialValue":{"baseExpression":{"expression":{"id":5227,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"25443:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25448:5:28","memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3860,"src":"25443:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_TickInfo_$3845_storage_$","typeString":"mapping(int24 => struct Pool.TickInfo storage ref)"}},"id":5230,"indexExpression":{"id":5229,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5213,"src":"25454:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25443:16:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage","typeString":"struct Pool.TickInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"25419:40:28"},{"assignments":[5233],"declarations":[{"constant":false,"id":5233,"mutability":"mutable","name":"liquidityGrossBefore","nameLocation":"25478:20:28","nodeType":"VariableDeclaration","scope":5301,"src":"25470:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5232,"name":"uint128","nodeType":"ElementaryTypeName","src":"25470:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5236,"initialValue":{"expression":{"id":5234,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"25501:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25506:14:28","memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":3838,"src":"25501:19:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"25470:50:28"},{"assignments":[5238],"declarations":[{"constant":false,"id":5238,"mutability":"mutable","name":"liquidityNetBefore","nameLocation":"25537:18:28","nodeType":"VariableDeclaration","scope":5301,"src":"25530:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5237,"name":"int128","nodeType":"ElementaryTypeName","src":"25530:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":5241,"initialValue":{"expression":{"id":5239,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"25558:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25563:12:28","memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":3840,"src":"25558:17:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"25530:45:28"},{"expression":{"id":5248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5242,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5222,"src":"25586:19:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5245,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5233,"src":"25631:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5246,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"25653:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":5243,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"25608:13:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$7623_$","typeString":"type(library LiquidityMath)"}},"id":5244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25622:8:28","memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":7622,"src":"25608:22:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":5247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25608:60:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"25586:82:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5249,"nodeType":"ExpressionStatement","src":"25586:82:28"},{"expression":{"id":5260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5250,"name":"flipped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5220,"src":"25679:7:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5251,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5222,"src":"25690:19:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25713:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25690:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5254,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25689:26:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5255,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5233,"src":"25720:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25744:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25720:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25719:27:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25689:57:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25679:67:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5261,"nodeType":"ExpressionStatement","src":"25679:67:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5262,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5233,"src":"25761:20:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25785:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25761:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5288,"nodeType":"IfStatement","src":"25757:357:28","trueBody":{"id":5287,"nodeType":"Block","src":"25788:326:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":5270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5265,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5213,"src":"25918:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5266,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"25926:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25931:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"25926:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":5268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25937:4:28","memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":8672,"src":"25926:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_int24_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (int24)"}},"id":5269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25926:17:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"25918:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5286,"nodeType":"IfStatement","src":"25914:190:28","trueBody":{"id":5285,"nodeType":"Block","src":"25945:159:28","statements":[{"expression":{"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5271,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"25963:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"25968:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"25963:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5274,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"25992:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25997:20:28","memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"25992:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25963:54:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5277,"nodeType":"ExpressionStatement","src":"25963:54:28"},{"expression":{"id":5283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5278,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"26035:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"26040:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"26035:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5281,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"26064:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26069:20:28","memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":3853,"src":"26064:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26035:54:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5284,"nodeType":"ExpressionStatement","src":"26035:54:28"}]}}]}},{"assignments":[5290],"declarations":[{"constant":false,"id":5290,"mutability":"mutable","name":"liquidityNet","nameLocation":"26329:12:28","nodeType":"VariableDeclaration","scope":5301,"src":"26322:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5289,"name":"int128","nodeType":"ElementaryTypeName","src":"26322:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":5299,"initialValue":{"condition":{"id":5291,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5217,"src":"26344:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":5297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5295,"name":"liquidityNetBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5238,"src":"26390:18:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5296,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"26411:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"26390:35:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"26344:81:28","trueExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":5294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5292,"name":"liquidityNetBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5238,"src":"26352:18:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5293,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"26373:14:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"26352:35:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"26322:103:28"},{"AST":{"nativeSrc":"26460:705:28","nodeType":"YulBlock","src":"26460:705:28","statements":[{"expression":{"arguments":[{"name":"info.slot","nativeSrc":"26678:9:28","nodeType":"YulIdentifier","src":"26678:9:28"},{"arguments":[{"arguments":[{"name":"liquidityGrossAfter","nativeSrc":"26902:19:28","nodeType":"YulIdentifier","src":"26902:19:28"},{"kind":"number","nativeSrc":"26923:34:28","nodeType":"YulLiteral","src":"26923:34:28","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"26898:3:28","nodeType":"YulIdentifier","src":"26898:3:28"},"nativeSrc":"26898:60:28","nodeType":"YulFunctionCall","src":"26898:60:28"},{"arguments":[{"kind":"number","nativeSrc":"27105:3:28","nodeType":"YulLiteral","src":"27105:3:28","type":"","value":"128"},{"name":"liquidityNet","nativeSrc":"27110:12:28","nodeType":"YulIdentifier","src":"27110:12:28"}],"functionName":{"name":"shl","nativeSrc":"27101:3:28","nodeType":"YulIdentifier","src":"27101:3:28"},"nativeSrc":"27101:22:28","nodeType":"YulFunctionCall","src":"27101:22:28"}],"functionName":{"name":"or","nativeSrc":"26780:2:28","nodeType":"YulIdentifier","src":"26780:2:28"},"nativeSrc":"26780:361:28","nodeType":"YulFunctionCall","src":"26780:361:28"}],"functionName":{"name":"sstore","nativeSrc":"26654:6:28","nodeType":"YulIdentifier","src":"26654:6:28"},"nativeSrc":"26654:501:28","nodeType":"YulFunctionCall","src":"26654:501:28"},"nativeSrc":"26654:501:28","nodeType":"YulExpressionStatement","src":"26654:501:28"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5226,"isOffset":false,"isSlot":true,"src":"26678:9:28","suffix":"slot","valueSize":1},{"declaration":5222,"isOffset":false,"isSlot":false,"src":"26902:19:28","valueSize":1},{"declaration":5290,"isOffset":false,"isSlot":false,"src":"27110:12:28","valueSize":1}],"flags":["memory-safe"],"id":5300,"nodeType":"InlineAssembly","src":"26435:730:28"}]},"documentation":{"id":5208,"nodeType":"StructuredDocumentation","src":"24509:727:28","text":"@notice Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa\n @param self The mapping containing all tick information for initialized ticks\n @param tick The tick that will be updated\n @param liquidityDelta A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)\n @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa\n @return liquidityGrossAfter The total amount of liquidity for all positions that references the tick after the update"},"id":5302,"implemented":true,"kind":"function","modifiers":[],"name":"updateTick","nameLocation":"25250:10:28","nodeType":"FunctionDefinition","parameters":{"id":5218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5211,"mutability":"mutable","name":"self","nameLocation":"25275:4:28","nodeType":"VariableDeclaration","scope":5302,"src":"25261:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":5210,"nodeType":"UserDefinedTypeName","pathNode":{"id":5209,"name":"State","nameLocations":["25261:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"25261:5:28"},"referencedDeclaration":3870,"src":"25261:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":5213,"mutability":"mutable","name":"tick","nameLocation":"25287:4:28","nodeType":"VariableDeclaration","scope":5302,"src":"25281:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5212,"name":"int24","nodeType":"ElementaryTypeName","src":"25281:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5215,"mutability":"mutable","name":"liquidityDelta","nameLocation":"25300:14:28","nodeType":"VariableDeclaration","scope":5302,"src":"25293:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5214,"name":"int128","nodeType":"ElementaryTypeName","src":"25293:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":5217,"mutability":"mutable","name":"upper","nameLocation":"25321:5:28","nodeType":"VariableDeclaration","scope":5302,"src":"25316:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5216,"name":"bool","nodeType":"ElementaryTypeName","src":"25316:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25260:67:28"},"returnParameters":{"id":5223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5220,"mutability":"mutable","name":"flipped","nameLocation":"25367:7:28","nodeType":"VariableDeclaration","scope":5302,"src":"25362:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5219,"name":"bool","nodeType":"ElementaryTypeName","src":"25362:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5222,"mutability":"mutable","name":"liquidityGrossAfter","nameLocation":"25384:19:28","nodeType":"VariableDeclaration","scope":5302,"src":"25376:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5221,"name":"uint128","nodeType":"ElementaryTypeName","src":"25376:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"25361:43:28"},"scope":5409,"src":"25241:1930:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5321,"nodeType":"Block","src":"27665:853:28","statements":[{"assignments":[5311],"declarations":[{"constant":false,"id":5311,"mutability":"mutable","name":"MAX_TICK","nameLocation":"27996:8:28","nodeType":"VariableDeclaration","scope":5321,"src":"27990:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5310,"name":"int24","nodeType":"ElementaryTypeName","src":"27990:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":5314,"initialValue":{"expression":{"id":5312,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"28007:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":5313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28016:8:28","memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"28007:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"27990:34:28"},{"assignments":[5316],"declarations":[{"constant":false,"id":5316,"mutability":"mutable","name":"MIN_TICK","nameLocation":"28040:8:28","nodeType":"VariableDeclaration","scope":5321,"src":"28034:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5315,"name":"int24","nodeType":"ElementaryTypeName","src":"28034:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":5319,"initialValue":{"expression":{"id":5317,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"28051:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$6305_$","typeString":"type(library TickMath)"}},"id":5318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28060:8:28","memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":5776,"src":"28051:17:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"28034:34:28"},{"AST":{"nativeSrc":"28180:332:28","nodeType":"YulBlock","src":"28180:332:28","statements":[{"nativeSrc":"28194:41:28","nodeType":"YulAssignment","src":"28194:41:28","value":{"arguments":[{"kind":"number","nativeSrc":"28220:1:28","nodeType":"YulLiteral","src":"28220:1:28","type":"","value":"2"},{"name":"tickSpacing","nativeSrc":"28223:11:28","nodeType":"YulIdentifier","src":"28223:11:28"}],"functionName":{"name":"signextend","nativeSrc":"28209:10:28","nodeType":"YulIdentifier","src":"28209:10:28"},"nativeSrc":"28209:26:28","nodeType":"YulFunctionCall","src":"28209:26:28"},"variableNames":[{"name":"tickSpacing","nativeSrc":"28194:11:28","nodeType":"YulIdentifier","src":"28194:11:28"}]},{"nativeSrc":"28248:84:28","nodeType":"YulVariableDeclaration","src":"28248:84:28","value":{"arguments":[{"arguments":[{"name":"MIN_TICK","nativeSrc":"28272:8:28","nodeType":"YulIdentifier","src":"28272:8:28"},{"name":"tickSpacing","nativeSrc":"28282:11:28","nodeType":"YulIdentifier","src":"28282:11:28"}],"functionName":{"name":"sdiv","nativeSrc":"28267:4:28","nodeType":"YulIdentifier","src":"28267:4:28"},"nativeSrc":"28267:27:28","nodeType":"YulFunctionCall","src":"28267:27:28"},{"arguments":[{"arguments":[{"name":"MIN_TICK","nativeSrc":"28305:8:28","nodeType":"YulIdentifier","src":"28305:8:28"},{"name":"tickSpacing","nativeSrc":"28315:11:28","nodeType":"YulIdentifier","src":"28315:11:28"}],"functionName":{"name":"smod","nativeSrc":"28300:4:28","nodeType":"YulIdentifier","src":"28300:4:28"},"nativeSrc":"28300:27:28","nodeType":"YulFunctionCall","src":"28300:27:28"},{"kind":"number","nativeSrc":"28329:1:28","nodeType":"YulLiteral","src":"28329:1:28","type":"","value":"0"}],"functionName":{"name":"slt","nativeSrc":"28296:3:28","nodeType":"YulIdentifier","src":"28296:3:28"},"nativeSrc":"28296:35:28","nodeType":"YulFunctionCall","src":"28296:35:28"}],"functionName":{"name":"sub","nativeSrc":"28263:3:28","nodeType":"YulIdentifier","src":"28263:3:28"},"nativeSrc":"28263:69:28","nodeType":"YulFunctionCall","src":"28263:69:28"},"variables":[{"name":"minTick","nativeSrc":"28252:7:28","nodeType":"YulTypedName","src":"28252:7:28","type":""}]},{"nativeSrc":"28345:42:28","nodeType":"YulVariableDeclaration","src":"28345:42:28","value":{"arguments":[{"name":"MAX_TICK","nativeSrc":"28365:8:28","nodeType":"YulIdentifier","src":"28365:8:28"},{"name":"tickSpacing","nativeSrc":"28375:11:28","nodeType":"YulIdentifier","src":"28375:11:28"}],"functionName":{"name":"sdiv","nativeSrc":"28360:4:28","nodeType":"YulIdentifier","src":"28360:4:28"},"nativeSrc":"28360:27:28","nodeType":"YulFunctionCall","src":"28360:27:28"},"variables":[{"name":"maxTick","nativeSrc":"28349:7:28","nodeType":"YulTypedName","src":"28349:7:28","type":""}]},{"nativeSrc":"28400:45:28","nodeType":"YulVariableDeclaration","src":"28400:45:28","value":{"arguments":[{"arguments":[{"name":"maxTick","nativeSrc":"28424:7:28","nodeType":"YulIdentifier","src":"28424:7:28"},{"name":"minTick","nativeSrc":"28433:7:28","nodeType":"YulIdentifier","src":"28433:7:28"}],"functionName":{"name":"sub","nativeSrc":"28420:3:28","nodeType":"YulIdentifier","src":"28420:3:28"},"nativeSrc":"28420:21:28","nodeType":"YulFunctionCall","src":"28420:21:28"},{"kind":"number","nativeSrc":"28443:1:28","nodeType":"YulLiteral","src":"28443:1:28","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28416:3:28","nodeType":"YulIdentifier","src":"28416:3:28"},"nativeSrc":"28416:29:28","nodeType":"YulFunctionCall","src":"28416:29:28"},"variables":[{"name":"numTicks","nativeSrc":"28404:8:28","nodeType":"YulTypedName","src":"28404:8:28","type":""}]},{"nativeSrc":"28458:44:28","nodeType":"YulAssignment","src":"28458:44:28","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28480:3:28","nodeType":"YulLiteral","src":"28480:3:28","type":"","value":"128"},{"kind":"number","nativeSrc":"28485:1:28","nodeType":"YulLiteral","src":"28485:1:28","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"28476:3:28","nodeType":"YulIdentifier","src":"28476:3:28"},"nativeSrc":"28476:11:28","nodeType":"YulFunctionCall","src":"28476:11:28"},{"kind":"number","nativeSrc":"28489:1:28","nodeType":"YulLiteral","src":"28489:1:28","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"28472:3:28","nodeType":"YulIdentifier","src":"28472:3:28"},"nativeSrc":"28472:19:28","nodeType":"YulFunctionCall","src":"28472:19:28"},{"name":"numTicks","nativeSrc":"28493:8:28","nodeType":"YulIdentifier","src":"28493:8:28"}],"functionName":{"name":"div","nativeSrc":"28468:3:28","nodeType":"YulIdentifier","src":"28468:3:28"},"nativeSrc":"28468:34:28","nodeType":"YulFunctionCall","src":"28468:34:28"},"variableNames":[{"name":"result","nativeSrc":"28458:6:28","nodeType":"YulIdentifier","src":"28458:6:28"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5311,"isOffset":false,"isSlot":false,"src":"28365:8:28","valueSize":1},{"declaration":5316,"isOffset":false,"isSlot":false,"src":"28272:8:28","valueSize":1},{"declaration":5316,"isOffset":false,"isSlot":false,"src":"28305:8:28","valueSize":1},{"declaration":5308,"isOffset":false,"isSlot":false,"src":"28458:6:28","valueSize":1},{"declaration":5305,"isOffset":false,"isSlot":false,"src":"28194:11:28","valueSize":1},{"declaration":5305,"isOffset":false,"isSlot":false,"src":"28223:11:28","valueSize":1},{"declaration":5305,"isOffset":false,"isSlot":false,"src":"28282:11:28","valueSize":1},{"declaration":5305,"isOffset":false,"isSlot":false,"src":"28315:11:28","valueSize":1},{"declaration":5305,"isOffset":false,"isSlot":false,"src":"28375:11:28","valueSize":1}],"flags":["memory-safe"],"id":5320,"nodeType":"InlineAssembly","src":"28155:357:28"}]},"documentation":{"id":5303,"nodeType":"StructuredDocumentation","src":"27177:383:28","text":"@notice Derives max liquidity per tick from given tick spacing\n @dev Executed when adding liquidity\n @param tickSpacing The amount of required tick separation, realized in multiples of `tickSpacing`\n     e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...\n @return result The max liquidity per tick"},"id":5322,"implemented":true,"kind":"function","modifiers":[],"name":"tickSpacingToMaxLiquidityPerTick","nameLocation":"27574:32:28","nodeType":"FunctionDefinition","parameters":{"id":5306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5305,"mutability":"mutable","name":"tickSpacing","nameLocation":"27613:11:28","nodeType":"VariableDeclaration","scope":5322,"src":"27607:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5304,"name":"int24","nodeType":"ElementaryTypeName","src":"27607:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"27606:19:28"},"returnParameters":{"id":5309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5308,"mutability":"mutable","name":"result","nameLocation":"27657:6:28","nodeType":"VariableDeclaration","scope":5322,"src":"27649:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5307,"name":"uint128","nodeType":"ElementaryTypeName","src":"27649:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"27648:16:28"},"scope":5409,"src":"27565:953:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5343,"nodeType":"Block","src":"28655:93:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5329,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5326,"src":"28669:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28674:5:28","memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"28669:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"id":5331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28680:12:28","memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":8662,"src":"28669:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slot0_$8632_$returns$_t_uint160_$attached_to$_t_userDefinedValueType$_Slot0_$8632_$","typeString":"function (Slot0) pure returns (uint160)"}},"id":5332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28669:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28698:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28669:30:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5342,"nodeType":"IfStatement","src":"28665:76:28","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5335,"name":"PoolNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3818,"src":"28701:18:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28720:8:28","memberName":"selector","nodeType":"MemberAccess","src":"28701:27:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28729:10:28","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"28701:38:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28701:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5341,"nodeType":"ExpressionStatement","src":"28701:40:28"}}]},"documentation":{"id":5323,"nodeType":"StructuredDocumentation","src":"28524:62:28","text":"@notice Reverts if the given pool has not been initialized"},"id":5344,"implemented":true,"kind":"function","modifiers":[],"name":"checkPoolInitialized","nameLocation":"28600:20:28","nodeType":"FunctionDefinition","parameters":{"id":5327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5326,"mutability":"mutable","name":"self","nameLocation":"28635:4:28","nodeType":"VariableDeclaration","scope":5344,"src":"28621:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":5325,"nodeType":"UserDefinedTypeName","pathNode":{"id":5324,"name":"State","nameLocations":["28621:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"28621:5:28"},"referencedDeclaration":3870,"src":"28621:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"}],"src":"28620:20:28"},"returnParameters":{"id":5328,"nodeType":"ParameterList","parameters":[],"src":"28655:0:28"},"scope":5409,"src":"28591:157:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5359,"nodeType":"Block","src":"28995:40:28","statements":[{"expression":{"id":5357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"29005:23:28","subExpression":{"baseExpression":{"expression":{"id":5353,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"29012:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29017:5:28","memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3860,"src":"29012:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_TickInfo_$3845_storage_$","typeString":"mapping(int24 => struct Pool.TickInfo storage ref)"}},"id":5356,"indexExpression":{"id":5355,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5350,"src":"29023:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29012:16:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage","typeString":"struct Pool.TickInfo storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5358,"nodeType":"ExpressionStatement","src":"29005:23:28"}]},"documentation":{"id":5345,"nodeType":"StructuredDocumentation","src":"28754:176:28","text":"@notice Clears tick data\n @param self The mapping containing all initialized tick information for initialized ticks\n @param tick The tick that will be cleared"},"id":5360,"implemented":true,"kind":"function","modifiers":[],"name":"clearTick","nameLocation":"28944:9:28","nodeType":"FunctionDefinition","parameters":{"id":5351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5348,"mutability":"mutable","name":"self","nameLocation":"28968:4:28","nodeType":"VariableDeclaration","scope":5360,"src":"28954:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":5347,"nodeType":"UserDefinedTypeName","pathNode":{"id":5346,"name":"State","nameLocations":["28954:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"28954:5:28"},"referencedDeclaration":3870,"src":"28954:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":5350,"mutability":"mutable","name":"tick","nameLocation":"28980:4:28","nodeType":"VariableDeclaration","scope":5360,"src":"28974:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5349,"name":"int24","nodeType":"ElementaryTypeName","src":"28974:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"28953:32:28"},"returnParameters":{"id":5352,"nodeType":"ParameterList","parameters":[],"src":"28995:0:28"},"scope":5409,"src":"28935:100:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5407,"nodeType":"Block","src":"29711:321:28","statements":[{"id":5406,"nodeType":"UncheckedBlock","src":"29721:305:28","statements":[{"assignments":[5377],"declarations":[{"constant":false,"id":5377,"mutability":"mutable","name":"info","nameLocation":"29762:4:28","nodeType":"VariableDeclaration","scope":5406,"src":"29745:21:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"},"typeName":{"id":5376,"nodeType":"UserDefinedTypeName","pathNode":{"id":5375,"name":"TickInfo","nameLocations":["29745:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":3845,"src":"29745:8:28"},"referencedDeclaration":3845,"src":"29745:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo"}},"visibility":"internal"}],"id":5382,"initialValue":{"baseExpression":{"expression":{"id":5378,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5364,"src":"29769:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State storage pointer"}},"id":5379,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29774:5:28","memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3860,"src":"29769:10:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_TickInfo_$3845_storage_$","typeString":"mapping(int24 => struct Pool.TickInfo storage ref)"}},"id":5381,"indexExpression":{"id":5380,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"29780:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29769:16:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage","typeString":"struct Pool.TickInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"29745:40:28"},{"expression":{"id":5390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5383,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"29799:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"29804:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"29799:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5386,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5368,"src":"29828:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5387,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"29851:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29856:21:28","memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"29851:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29828:49:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29799:78:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5391,"nodeType":"ExpressionStatement","src":"29799:78:28"},{"expression":{"id":5399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5392,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"29891:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"29896:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"29891:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5395,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5370,"src":"29920:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5396,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"29943:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29948:21:28","memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":3844,"src":"29943:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29920:49:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29891:78:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5400,"nodeType":"ExpressionStatement","src":"29891:78:28"},{"expression":{"id":5404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5401,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5373,"src":"29983:12:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5402,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"29998:4:28","typeDescriptions":{"typeIdentifier":"t_struct$_TickInfo_$3845_storage_ptr","typeString":"struct Pool.TickInfo storage pointer"}},"id":5403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30003:12:28","memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":3840,"src":"29998:17:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"29983:32:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":5405,"nodeType":"ExpressionStatement","src":"29983:32:28"}]}]},"documentation":{"id":5361,"nodeType":"StructuredDocumentation","src":"29041:495:28","text":"@notice Transitions to next tick as needed by price movement\n @param self The Pool state struct\n @param tick The destination tick of the transition\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)"},"id":5408,"implemented":true,"kind":"function","modifiers":[],"name":"crossTick","nameLocation":"29550:9:28","nodeType":"FunctionDefinition","parameters":{"id":5371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5364,"mutability":"mutable","name":"self","nameLocation":"29574:4:28","nodeType":"VariableDeclaration","scope":5408,"src":"29560:18:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"},"typeName":{"id":5363,"nodeType":"UserDefinedTypeName","pathNode":{"id":5362,"name":"State","nameLocations":["29560:5:28"],"nodeType":"IdentifierPath","referencedDeclaration":3870,"src":"29560:5:28"},"referencedDeclaration":3870,"src":"29560:5:28","typeDescriptions":{"typeIdentifier":"t_struct$_State_$3870_storage_ptr","typeString":"struct Pool.State"}},"visibility":"internal"},{"constant":false,"id":5366,"mutability":"mutable","name":"tick","nameLocation":"29586:4:28","nodeType":"VariableDeclaration","scope":5408,"src":"29580:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5365,"name":"int24","nodeType":"ElementaryTypeName","src":"29580:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5368,"mutability":"mutable","name":"feeGrowthGlobal0X128","nameLocation":"29600:20:28","nodeType":"VariableDeclaration","scope":5408,"src":"29592:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5367,"name":"uint256","nodeType":"ElementaryTypeName","src":"29592:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5370,"mutability":"mutable","name":"feeGrowthGlobal1X128","nameLocation":"29630:20:28","nodeType":"VariableDeclaration","scope":5408,"src":"29622:28:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5369,"name":"uint256","nodeType":"ElementaryTypeName","src":"29622:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29559:92:28"},"returnParameters":{"id":5374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5373,"mutability":"mutable","name":"liquidityNet","nameLocation":"29693:12:28","nodeType":"VariableDeclaration","scope":5408,"src":"29686:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5372,"name":"int128","nodeType":"ElementaryTypeName","src":"29686:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"29685:21:28"},"scope":5409,"src":"29541:491:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5410,"src":"835:29199:28","usedErrors":[3797,3802,3807,3812,3815,3818,3825,3830,3833,3836],"usedEvents":[]}],"src":"37:29998:28"},"id":28},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Position.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/Position.sol","exportedSymbols":{"CustomRevert":[2358],"FixedPoint128":[7607],"FullMath":[8913],"LiquidityMath":[7623],"Position":[5575]},"id":5576,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":5411,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:29"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FullMath.sol","file":"./FullMath.sol","id":5413,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5576,"sourceUnit":8914,"src":"62:40:29","symbolAliases":[{"foreign":{"id":5412,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"70:8:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint128.sol","file":"./FixedPoint128.sol","id":5415,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5576,"sourceUnit":7608,"src":"103:50:29","symbolAliases":[{"foreign":{"id":5414,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"111:13:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/LiquidityMath.sol","file":"./LiquidityMath.sol","id":5417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5576,"sourceUnit":7624,"src":"154:50:29","symbolAliases":[{"foreign":{"id":5416,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"162:13:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./CustomRevert.sol","id":5419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5576,"sourceUnit":2359,"src":"205:48:29","symbolAliases":[{"foreign":{"id":5418,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"213:12:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Position","contractDependencies":[],"contractKind":"library","documentation":{"id":5420,"nodeType":"StructuredDocumentation","src":"255:201:29","text":"@title Position\n @notice Positions represent an owner address' liquidity between a lower and upper tick boundary\n @dev Positions store additional state for tracking fees owed to the position"},"fullyImplemented":true,"id":5575,"linearizedBaseContracts":[5575],"name":"Position","nameLocation":"464:8:29","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5423,"libraryName":{"id":5421,"name":"CustomRevert","nameLocations":["485:12:29"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"485:12:29"},"nodeType":"UsingForDirective","src":"479:30:29","typeName":{"id":5422,"name":"bytes4","nodeType":"ElementaryTypeName","src":"502:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"documentation":{"id":5424,"nodeType":"StructuredDocumentation","src":"515:54:29","text":"@notice Cannot update a position with no liquidity"},"errorSelector":"aefeb924","id":5426,"name":"CannotUpdateEmptyPosition","nameLocation":"580:25:29","nodeType":"ErrorDefinition","parameters":{"id":5425,"nodeType":"ParameterList","parameters":[],"src":"605:2:29"},"src":"574:34:29"},{"canonicalName":"Position.State","id":5433,"members":[{"constant":false,"id":5428,"mutability":"mutable","name":"liquidity","nameLocation":"747:9:29","nodeType":"VariableDeclaration","scope":5433,"src":"739:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5427,"name":"uint128","nodeType":"ElementaryTypeName","src":"739:7:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5430,"mutability":"mutable","name":"feeGrowthInside0LastX128","nameLocation":"866:24:29","nodeType":"VariableDeclaration","scope":5433,"src":"858:32:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5429,"name":"uint256","nodeType":"ElementaryTypeName","src":"858:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5432,"mutability":"mutable","name":"feeGrowthInside1LastX128","nameLocation":"908:24:29","nodeType":"VariableDeclaration","scope":5433,"src":"900:32:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5431,"name":"uint256","nodeType":"ElementaryTypeName","src":"900:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"State","nameLocation":"665:5:29","nodeType":"StructDefinition","scope":5575,"src":"658:281:29","visibility":"public"},{"body":{"id":5468,"nodeType":"Block","src":"1655:132:29","statements":[{"assignments":[5454],"declarations":[{"constant":false,"id":5454,"mutability":"mutable","name":"positionKey","nameLocation":"1673:11:29","nodeType":"VariableDeclaration","scope":5468,"src":"1665:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5453,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1665:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5461,"initialValue":{"arguments":[{"id":5456,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"1708:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5457,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"1715:9:29","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5458,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5445,"src":"1726:9:29","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5459,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5447,"src":"1737:4:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5455,"name":"calculatePositionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5485,"src":"1687:20:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_int24_$_t_int24_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,int24,int24,bytes32) pure returns (bytes32)"}},"id":5460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1687:55:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1665:77:29"},{"expression":{"id":5466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5462,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5451,"src":"1752:8:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":5463,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"1763:4:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$","typeString":"mapping(bytes32 => struct Position.State storage ref)"}},"id":5465,"indexExpression":{"id":5464,"name":"positionKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5454,"src":"1768:11:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1763:17:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage","typeString":"struct Position.State storage ref"}},"src":"1752:28:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":5467,"nodeType":"ExpressionStatement","src":"1752:28:29"}]},"documentation":{"id":5434,"nodeType":"StructuredDocumentation","src":"945:514:29","text":"@notice Returns the State struct of a position, given an owner and position boundaries\n @param self The mapping containing all user positions\n @param owner The address of the position owner\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @param salt A unique value to differentiate between multiple positions in the same range\n @return position The position info struct of the given owners' position"},"id":5469,"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"1473:3:29","nodeType":"FunctionDefinition","parameters":{"id":5448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5439,"mutability":"mutable","name":"self","nameLocation":"1511:4:29","nodeType":"VariableDeclaration","scope":5469,"src":"1477:38:29","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$","typeString":"mapping(bytes32 => struct Position.State)"},"typeName":{"id":5438,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":5435,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1485:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1477:25:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_State_$5433_storage_$","typeString":"mapping(bytes32 => struct Position.State)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5437,"nodeType":"UserDefinedTypeName","pathNode":{"id":5436,"name":"State","nameLocations":["1496:5:29"],"nodeType":"IdentifierPath","referencedDeclaration":5433,"src":"1496:5:29"},"referencedDeclaration":5433,"src":"1496:5:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"}}},"visibility":"internal"},{"constant":false,"id":5441,"mutability":"mutable","name":"owner","nameLocation":"1525:5:29","nodeType":"VariableDeclaration","scope":5469,"src":"1517:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5440,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5443,"mutability":"mutable","name":"tickLower","nameLocation":"1538:9:29","nodeType":"VariableDeclaration","scope":5469,"src":"1532:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5442,"name":"int24","nodeType":"ElementaryTypeName","src":"1532:5:29","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5445,"mutability":"mutable","name":"tickUpper","nameLocation":"1555:9:29","nodeType":"VariableDeclaration","scope":5469,"src":"1549:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5444,"name":"int24","nodeType":"ElementaryTypeName","src":"1549:5:29","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5447,"mutability":"mutable","name":"salt","nameLocation":"1574:4:29","nodeType":"VariableDeclaration","scope":5469,"src":"1566:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5446,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1566:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1476:103:29"},"returnParameters":{"id":5452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5451,"mutability":"mutable","name":"position","nameLocation":"1641:8:29","nodeType":"VariableDeclaration","scope":5469,"src":"1627:22:29","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"},"typeName":{"id":5450,"nodeType":"UserDefinedTypeName","pathNode":{"id":5449,"name":"State","nameLocations":["1627:5:29"],"nodeType":"IdentifierPath","referencedDeclaration":5433,"src":"1627:5:29"},"referencedDeclaration":5433,"src":"1627:5:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"}},"visibility":"internal"}],"src":"1626:24:29"},"scope":5575,"src":"1464:323:29","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5484,"nodeType":"Block","src":"2349:713:29","statements":[{"AST":{"nativeSrc":"2472:584:29","nodeType":"YulBlock","src":"2472:584:29","statements":[{"nativeSrc":"2486:22:29","nodeType":"YulVariableDeclaration","src":"2486:22:29","value":{"arguments":[{"kind":"number","nativeSrc":"2503:4:29","nodeType":"YulLiteral","src":"2503:4:29","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2497:5:29","nodeType":"YulIdentifier","src":"2497:5:29"},"nativeSrc":"2497:11:29","nodeType":"YulFunctionCall","src":"2497:11:29"},"variables":[{"name":"fmp","nativeSrc":"2490:3:29","nodeType":"YulTypedName","src":"2490:3:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2532:3:29","nodeType":"YulIdentifier","src":"2532:3:29"},{"kind":"number","nativeSrc":"2537:4:29","nodeType":"YulLiteral","src":"2537:4:29","type":"","value":"0x26"}],"functionName":{"name":"add","nativeSrc":"2528:3:29","nodeType":"YulIdentifier","src":"2528:3:29"},"nativeSrc":"2528:14:29","nodeType":"YulFunctionCall","src":"2528:14:29"},{"name":"salt","nativeSrc":"2544:4:29","nodeType":"YulIdentifier","src":"2544:4:29"}],"functionName":{"name":"mstore","nativeSrc":"2521:6:29","nodeType":"YulIdentifier","src":"2521:6:29"},"nativeSrc":"2521:28:29","nodeType":"YulFunctionCall","src":"2521:28:29"},"nativeSrc":"2521:28:29","nodeType":"YulExpressionStatement","src":"2521:28:29"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2589:3:29","nodeType":"YulIdentifier","src":"2589:3:29"},{"kind":"number","nativeSrc":"2594:4:29","nodeType":"YulLiteral","src":"2594:4:29","type":"","value":"0x06"}],"functionName":{"name":"add","nativeSrc":"2585:3:29","nodeType":"YulIdentifier","src":"2585:3:29"},"nativeSrc":"2585:14:29","nodeType":"YulFunctionCall","src":"2585:14:29"},{"name":"tickUpper","nativeSrc":"2601:9:29","nodeType":"YulIdentifier","src":"2601:9:29"}],"functionName":{"name":"mstore","nativeSrc":"2578:6:29","nodeType":"YulIdentifier","src":"2578:6:29"},"nativeSrc":"2578:33:29","nodeType":"YulFunctionCall","src":"2578:33:29"},"nativeSrc":"2578:33:29","nodeType":"YulExpressionStatement","src":"2578:33:29"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2651:3:29","nodeType":"YulIdentifier","src":"2651:3:29"},{"kind":"number","nativeSrc":"2656:4:29","nodeType":"YulLiteral","src":"2656:4:29","type":"","value":"0x03"}],"functionName":{"name":"add","nativeSrc":"2647:3:29","nodeType":"YulIdentifier","src":"2647:3:29"},"nativeSrc":"2647:14:29","nodeType":"YulFunctionCall","src":"2647:14:29"},{"name":"tickLower","nativeSrc":"2663:9:29","nodeType":"YulIdentifier","src":"2663:9:29"}],"functionName":{"name":"mstore","nativeSrc":"2640:6:29","nodeType":"YulIdentifier","src":"2640:6:29"},"nativeSrc":"2640:33:29","nodeType":"YulFunctionCall","src":"2640:33:29"},"nativeSrc":"2640:33:29","nodeType":"YulExpressionStatement","src":"2640:33:29"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"2709:3:29","nodeType":"YulIdentifier","src":"2709:3:29"},{"name":"owner","nativeSrc":"2714:5:29","nodeType":"YulIdentifier","src":"2714:5:29"}],"functionName":{"name":"mstore","nativeSrc":"2702:6:29","nodeType":"YulIdentifier","src":"2702:6:29"},"nativeSrc":"2702:18:29","nodeType":"YulFunctionCall","src":"2702:18:29"},"nativeSrc":"2702:18:29","nodeType":"YulExpressionStatement","src":"2702:18:29"},{"nativeSrc":"2749:46:29","nodeType":"YulAssignment","src":"2749:46:29","value":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2778:3:29","nodeType":"YulIdentifier","src":"2778:3:29"},{"kind":"number","nativeSrc":"2783:4:29","nodeType":"YulLiteral","src":"2783:4:29","type":"","value":"0x0c"}],"functionName":{"name":"add","nativeSrc":"2774:3:29","nodeType":"YulIdentifier","src":"2774:3:29"},"nativeSrc":"2774:14:29","nodeType":"YulFunctionCall","src":"2774:14:29"},{"kind":"number","nativeSrc":"2790:4:29","nodeType":"YulLiteral","src":"2790:4:29","type":"","value":"0x3a"}],"functionName":{"name":"keccak256","nativeSrc":"2764:9:29","nodeType":"YulIdentifier","src":"2764:9:29"},"nativeSrc":"2764:31:29","nodeType":"YulFunctionCall","src":"2764:31:29"},"variableNames":[{"name":"positionKey","nativeSrc":"2749:11:29","nodeType":"YulIdentifier","src":"2749:11:29"}]},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2883:3:29","nodeType":"YulIdentifier","src":"2883:3:29"},{"kind":"number","nativeSrc":"2888:4:29","nodeType":"YulLiteral","src":"2888:4:29","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2879:3:29","nodeType":"YulIdentifier","src":"2879:3:29"},"nativeSrc":"2879:14:29","nodeType":"YulFunctionCall","src":"2879:14:29"},{"kind":"number","nativeSrc":"2895:1:29","nodeType":"YulLiteral","src":"2895:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2872:6:29","nodeType":"YulIdentifier","src":"2872:6:29"},"nativeSrc":"2872:25:29","nodeType":"YulFunctionCall","src":"2872:25:29"},"nativeSrc":"2872:25:29","nodeType":"YulExpressionStatement","src":"2872:25:29"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2943:3:29","nodeType":"YulIdentifier","src":"2943:3:29"},{"kind":"number","nativeSrc":"2948:4:29","nodeType":"YulLiteral","src":"2948:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2939:3:29","nodeType":"YulIdentifier","src":"2939:3:29"},"nativeSrc":"2939:14:29","nodeType":"YulFunctionCall","src":"2939:14:29"},{"kind":"number","nativeSrc":"2955:1:29","nodeType":"YulLiteral","src":"2955:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2932:6:29","nodeType":"YulIdentifier","src":"2932:6:29"},"nativeSrc":"2932:25:29","nodeType":"YulFunctionCall","src":"2932:25:29"},"nativeSrc":"2932:25:29","nodeType":"YulExpressionStatement","src":"2932:25:29"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"3021:3:29","nodeType":"YulIdentifier","src":"3021:3:29"},{"kind":"number","nativeSrc":"3026:1:29","nodeType":"YulLiteral","src":"3026:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3014:6:29","nodeType":"YulIdentifier","src":"3014:6:29"},"nativeSrc":"3014:14:29","nodeType":"YulFunctionCall","src":"3014:14:29"},"nativeSrc":"3014:14:29","nodeType":"YulExpressionStatement","src":"3014:14:29"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5472,"isOffset":false,"isSlot":false,"src":"2714:5:29","valueSize":1},{"declaration":5481,"isOffset":false,"isSlot":false,"src":"2749:11:29","valueSize":1},{"declaration":5478,"isOffset":false,"isSlot":false,"src":"2544:4:29","valueSize":1},{"declaration":5474,"isOffset":false,"isSlot":false,"src":"2663:9:29","valueSize":1},{"declaration":5476,"isOffset":false,"isSlot":false,"src":"2601:9:29","valueSize":1}],"flags":["memory-safe"],"id":5483,"nodeType":"InlineAssembly","src":"2447:609:29"}]},"documentation":{"id":5470,"nodeType":"StructuredDocumentation","src":"1793:386:29","text":"@notice A helper function to calculate the position key\n @param owner The address of the position owner\n @param tickLower the lower tick boundary of the position\n @param tickUpper the upper tick boundary of the position\n @param salt A unique value to differentiate between multiple positions in the same range, by the same owner. Passed in by the caller."},"id":5485,"implemented":true,"kind":"function","modifiers":[],"name":"calculatePositionKey","nameLocation":"2193:20:29","nodeType":"FunctionDefinition","parameters":{"id":5479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5472,"mutability":"mutable","name":"owner","nameLocation":"2222:5:29","nodeType":"VariableDeclaration","scope":5485,"src":"2214:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5471,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5474,"mutability":"mutable","name":"tickLower","nameLocation":"2235:9:29","nodeType":"VariableDeclaration","scope":5485,"src":"2229:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5473,"name":"int24","nodeType":"ElementaryTypeName","src":"2229:5:29","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5476,"mutability":"mutable","name":"tickUpper","nameLocation":"2252:9:29","nodeType":"VariableDeclaration","scope":5485,"src":"2246:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5475,"name":"int24","nodeType":"ElementaryTypeName","src":"2246:5:29","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5478,"mutability":"mutable","name":"salt","nameLocation":"2271:4:29","nodeType":"VariableDeclaration","scope":5485,"src":"2263:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5477,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2263:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2213:63:29"},"returnParameters":{"id":5482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5481,"mutability":"mutable","name":"positionKey","nameLocation":"2332:11:29","nodeType":"VariableDeclaration","scope":5485,"src":"2324:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5480,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2324:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2323:21:29"},"scope":5575,"src":"2184:878:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5573,"nodeType":"Block","src":"3915:895:29","statements":[{"assignments":[5503],"declarations":[{"constant":false,"id":5503,"mutability":"mutable","name":"liquidity","nameLocation":"3933:9:29","nodeType":"VariableDeclaration","scope":5573,"src":"3925:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5502,"name":"uint128","nodeType":"ElementaryTypeName","src":"3925:7:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5506,"initialValue":{"expression":{"id":5504,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5489,"src":"3945:4:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":5505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3950:9:29","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5428,"src":"3945:14:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3925:34:29"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":5509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5507,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"3974:14:29","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3992:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3974:19:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5532,"nodeType":"Block","src":"4149:91:29","statements":[{"expression":{"id":5530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5522,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5489,"src":"4163:4:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":5524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4168:9:29","memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5428,"src":"4163:14:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5527,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5503,"src":"4203:9:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5528,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"4214:14:29","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":5525,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"4180:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$7623_$","typeString":"type(library LiquidityMath)"}},"id":5526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4194:8:29","memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":7622,"src":"4180:22:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":5529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:49:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"4163:66:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5531,"nodeType":"ExpressionStatement","src":"4163:66:29"}]},"id":5533,"nodeType":"IfStatement","src":"3970:270:29","trueBody":{"id":5521,"nodeType":"Block","src":"3995:148:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5510,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5503,"src":"4069:9:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4082:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4069:14:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5520,"nodeType":"IfStatement","src":"4065:67:29","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5513,"name":"CannotUpdateEmptyPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5426,"src":"4085:25:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4111:8:29","memberName":"selector","nodeType":"MemberAccess","src":"4085:34:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4120:10:29","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"4085:45:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4085:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5519,"nodeType":"ExpressionStatement","src":"4085:47:29"}}]}},{"id":5560,"nodeType":"UncheckedBlock","src":"4343:305:29","statements":[{"expression":{"id":5545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5534,"name":"feesOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5498,"src":"4367:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5537,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"4411:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5538,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5489,"src":"4434:4:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":5539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4439:24:29","memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":5430,"src":"4434:29:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4411:52:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5541,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5503,"src":"4465:9:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5542,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"4476:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$7607_$","typeString":"type(library FixedPoint128)"}},"id":5543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4490:4:29","memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":7606,"src":"4476:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5535,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"4395:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4404:6:29","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8874,"src":"4395:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4395:100:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4367:128:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5546,"nodeType":"ExpressionStatement","src":"4367:128:29"},{"expression":{"id":5558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5547,"name":"feesOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"4509:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5550,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5495,"src":"4553:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5551,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5489,"src":"4576:4:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":5552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4581:24:29","memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":5432,"src":"4576:29:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4553:52:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5554,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5503,"src":"4607:9:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5555,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"4618:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$7607_$","typeString":"type(library FixedPoint128)"}},"id":5556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4632:4:29","memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":7606,"src":"4618:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5548,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"4537:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":5549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4546:6:29","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8874,"src":"4537:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4537:100:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4509:128:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5559,"nodeType":"ExpressionStatement","src":"4509:128:29"}]},{"expression":{"id":5565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5561,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5489,"src":"4689:4:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":5563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4694:24:29","memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":5430,"src":"4689:29:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5564,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"4721:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4689:52:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5566,"nodeType":"ExpressionStatement","src":"4689:52:29"},{"expression":{"id":5571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5567,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5489,"src":"4751:4:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State storage pointer"}},"id":5569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4756:24:29","memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":5432,"src":"4751:29:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5570,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5495,"src":"4783:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4751:52:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5572,"nodeType":"ExpressionStatement","src":"4751:52:29"}]},"documentation":{"id":5486,"nodeType":"StructuredDocumentation","src":"3068:629:29","text":"@notice Credits accumulated fees to a user's position\n @param self The individual position to update\n @param liquidityDelta The change in pool liquidity as a result of the position update\n @param feeGrowthInside0X128 The all-time fee growth in currency0, per unit of liquidity, inside the position's tick boundaries\n @param feeGrowthInside1X128 The all-time fee growth in currency1, per unit of liquidity, inside the position's tick boundaries\n @return feesOwed0 The amount of currency0 owed to the position owner\n @return feesOwed1 The amount of currency1 owed to the position owner"},"id":5574,"implemented":true,"kind":"function","modifiers":[],"name":"update","nameLocation":"3711:6:29","nodeType":"FunctionDefinition","parameters":{"id":5496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5489,"mutability":"mutable","name":"self","nameLocation":"3741:4:29","nodeType":"VariableDeclaration","scope":5574,"src":"3727:18:29","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"},"typeName":{"id":5488,"nodeType":"UserDefinedTypeName","pathNode":{"id":5487,"name":"State","nameLocations":["3727:5:29"],"nodeType":"IdentifierPath","referencedDeclaration":5433,"src":"3727:5:29"},"referencedDeclaration":5433,"src":"3727:5:29","typeDescriptions":{"typeIdentifier":"t_struct$_State_$5433_storage_ptr","typeString":"struct Position.State"}},"visibility":"internal"},{"constant":false,"id":5491,"mutability":"mutable","name":"liquidityDelta","nameLocation":"3762:14:29","nodeType":"VariableDeclaration","scope":5574,"src":"3755:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5490,"name":"int128","nodeType":"ElementaryTypeName","src":"3755:6:29","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":5493,"mutability":"mutable","name":"feeGrowthInside0X128","nameLocation":"3794:20:29","nodeType":"VariableDeclaration","scope":5574,"src":"3786:28:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5492,"name":"uint256","nodeType":"ElementaryTypeName","src":"3786:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5495,"mutability":"mutable","name":"feeGrowthInside1X128","nameLocation":"3832:20:29","nodeType":"VariableDeclaration","scope":5574,"src":"3824:28:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5494,"name":"uint256","nodeType":"ElementaryTypeName","src":"3824:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3717:141:29"},"returnParameters":{"id":5501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5498,"mutability":"mutable","name":"feesOwed0","nameLocation":"3885:9:29","nodeType":"VariableDeclaration","scope":5574,"src":"3877:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5497,"name":"uint256","nodeType":"ElementaryTypeName","src":"3877:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5500,"mutability":"mutable","name":"feesOwed1","nameLocation":"3904:9:29","nodeType":"VariableDeclaration","scope":5574,"src":"3896:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5499,"name":"uint256","nodeType":"ElementaryTypeName","src":"3896:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3876:38:29"},"scope":5575,"src":"3702:1108:29","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5576,"src":"456:4356:29","usedErrors":[5426],"usedEvents":[]}],"src":"37:4776:29"},"id":29},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/ProtocolFeeLibrary.sol","exportedSymbols":{"ProtocolFeeLibrary":[7395]},"id":7396,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7325,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:30"},{"abstract":false,"baseContracts":[],"canonicalName":"ProtocolFeeLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":7326,"nodeType":"StructuredDocumentation","src":"57:58:30","text":"@notice library of functions related to protocol fees"},"fullyImplemented":true,"id":7395,"linearizedBaseContracts":[7395],"name":"ProtocolFeeLibrary","nameLocation":"123:18:30","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":7327,"nodeType":"StructuredDocumentation","src":"148:121:30","text":"@notice Max protocol fee is 0.1% (1000 pips)\n @dev Increasing these values could lead to overflow in Pool.swap"},"functionSelector":"b8ca3b83","id":7330,"mutability":"constant","name":"MAX_PROTOCOL_FEE","nameLocation":"297:16:30","nodeType":"VariableDeclaration","scope":7395,"src":"274:46:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":7328,"name":"uint16","nodeType":"ElementaryTypeName","src":"274:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31303030","id":7329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"316:4:30","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"visibility":"public"},{"constant":true,"documentation":{"id":7331,"nodeType":"StructuredDocumentation","src":"327:72:30","text":"@notice Thresholds used for optimized bounds checks on protocol fees"},"id":7334,"mutability":"constant","name":"FEE_0_THRESHOLD","nameLocation":"429:15:30","nodeType":"VariableDeclaration","scope":7395,"src":"404:47:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7332,"name":"uint24","nodeType":"ElementaryTypeName","src":"404:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"value":{"hexValue":"31303031","id":7333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"447:4:30","typeDescriptions":{"typeIdentifier":"t_rational_1001_by_1","typeString":"int_const 1001"},"value":"1001"},"visibility":"internal"},{"constant":true,"id":7339,"mutability":"constant","name":"FEE_1_THRESHOLD","nameLocation":"482:15:30","nodeType":"VariableDeclaration","scope":7395,"src":"457:53:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7335,"name":"uint24","nodeType":"ElementaryTypeName","src":"457:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"value":{"commonType":{"typeIdentifier":"t_rational_4100096_by_1","typeString":"int_const 4100096"},"id":7338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31303031","id":7336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"500:4:30","typeDescriptions":{"typeIdentifier":"t_rational_1001_by_1","typeString":"int_const 1001"},"value":"1001"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3132","id":7337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"508:2:30","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"500:10:30","typeDescriptions":{"typeIdentifier":"t_rational_4100096_by_1","typeString":"int_const 4100096"}},"visibility":"internal"},{"constant":true,"documentation":{"id":7340,"nodeType":"StructuredDocumentation","src":"517:66:30","text":"@notice the protocol fee is represented in hundredths of a bip"},"id":7343,"mutability":"constant","name":"PIPS_DENOMINATOR","nameLocation":"614:16:30","nodeType":"VariableDeclaration","scope":7395,"src":"588:54:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7341,"name":"uint256","nodeType":"ElementaryTypeName","src":"588:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":7342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:9:30","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"internal"},{"body":{"id":7357,"nodeType":"Block","src":"719:44:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7352,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7345,"src":"743:4:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078666666","id":7353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"750:5:30","typeDescriptions":{"typeIdentifier":"t_rational_4095_by_1","typeString":"int_const 4095"},"value":"0xfff"},"src":"743:12:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":7351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:6:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":7350,"name":"uint16","nodeType":"ElementaryTypeName","src":"736:6:30","typeDescriptions":{}}},"id":7355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":7349,"id":7356,"nodeType":"Return","src":"729:27:30"}]},"id":7358,"implemented":true,"kind":"function","modifiers":[],"name":"getZeroForOneFee","nameLocation":"658:16:30","nodeType":"FunctionDefinition","parameters":{"id":7346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7345,"mutability":"mutable","name":"self","nameLocation":"682:4:30","nodeType":"VariableDeclaration","scope":7358,"src":"675:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7344,"name":"uint24","nodeType":"ElementaryTypeName","src":"675:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"674:13:30"},"returnParameters":{"id":7349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7358,"src":"711:6:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":7347,"name":"uint16","nodeType":"ElementaryTypeName","src":"711:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"710:8:30"},"scope":7395,"src":"649:114:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7372,"nodeType":"Block","src":"839:42:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7367,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"863:4:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3132","id":7368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"871:2:30","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"863:10:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":7366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"856:6:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":7365,"name":"uint16","nodeType":"ElementaryTypeName","src":"856:6:30","typeDescriptions":{}}},"id":7370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"856:18:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":7364,"id":7371,"nodeType":"Return","src":"849:25:30"}]},"id":7373,"implemented":true,"kind":"function","modifiers":[],"name":"getOneForZeroFee","nameLocation":"778:16:30","nodeType":"FunctionDefinition","parameters":{"id":7361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7360,"mutability":"mutable","name":"self","nameLocation":"802:4:30","nodeType":"VariableDeclaration","scope":7373,"src":"795:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7359,"name":"uint24","nodeType":"ElementaryTypeName","src":"795:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"794:13:30"},"returnParameters":{"id":7364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7373,"src":"831:6:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":7362,"name":"uint16","nodeType":"ElementaryTypeName","src":"831:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"830:8:30"},"scope":7395,"src":"769:112:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7381,"nodeType":"Block","src":"963:383:30","statements":[{"AST":{"nativeSrc":"1113:227:30","nodeType":"YulBlock","src":"1113:227:30","statements":[{"nativeSrc":"1127:62:30","nodeType":"YulVariableDeclaration","src":"1127:62:30","value":{"arguments":[{"arguments":[{"name":"self","nativeSrc":"1159:4:30","nodeType":"YulIdentifier","src":"1159:4:30"},{"kind":"number","nativeSrc":"1165:5:30","nodeType":"YulLiteral","src":"1165:5:30","type":"","value":"0xfff"}],"functionName":{"name":"and","nativeSrc":"1155:3:30","nodeType":"YulIdentifier","src":"1155:3:30"},"nativeSrc":"1155:16:30","nodeType":"YulFunctionCall","src":"1155:16:30"},{"name":"FEE_0_THRESHOLD","nativeSrc":"1173:15:30","nodeType":"YulIdentifier","src":"1173:15:30"}],"functionName":{"name":"lt","nativeSrc":"1152:2:30","nodeType":"YulIdentifier","src":"1152:2:30"},"nativeSrc":"1152:37:30","nodeType":"YulFunctionCall","src":"1152:37:30"},"variables":[{"name":"isZeroForOneFeeOk","nativeSrc":"1131:17:30","nodeType":"YulTypedName","src":"1131:17:30","type":""}]},{"nativeSrc":"1202:65:30","nodeType":"YulVariableDeclaration","src":"1202:65:30","value":{"arguments":[{"arguments":[{"name":"self","nativeSrc":"1234:4:30","nodeType":"YulIdentifier","src":"1234:4:30"},{"kind":"number","nativeSrc":"1240:8:30","nodeType":"YulLiteral","src":"1240:8:30","type":"","value":"0xfff000"}],"functionName":{"name":"and","nativeSrc":"1230:3:30","nodeType":"YulIdentifier","src":"1230:3:30"},"nativeSrc":"1230:19:30","nodeType":"YulFunctionCall","src":"1230:19:30"},{"name":"FEE_1_THRESHOLD","nativeSrc":"1251:15:30","nodeType":"YulIdentifier","src":"1251:15:30"}],"functionName":{"name":"lt","nativeSrc":"1227:2:30","nodeType":"YulIdentifier","src":"1227:2:30"},"nativeSrc":"1227:40:30","nodeType":"YulFunctionCall","src":"1227:40:30"},"variables":[{"name":"isOneForZeroFeeOk","nativeSrc":"1206:17:30","nodeType":"YulTypedName","src":"1206:17:30","type":""}]},{"nativeSrc":"1280:50:30","nodeType":"YulAssignment","src":"1280:50:30","value":{"arguments":[{"name":"isZeroForOneFeeOk","nativeSrc":"1293:17:30","nodeType":"YulIdentifier","src":"1293:17:30"},{"name":"isOneForZeroFeeOk","nativeSrc":"1312:17:30","nodeType":"YulIdentifier","src":"1312:17:30"}],"functionName":{"name":"and","nativeSrc":"1289:3:30","nodeType":"YulIdentifier","src":"1289:3:30"},"nativeSrc":"1289:41:30","nodeType":"YulFunctionCall","src":"1289:41:30"},"variableNames":[{"name":"valid","nativeSrc":"1280:5:30","nodeType":"YulIdentifier","src":"1280:5:30"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7334,"isOffset":false,"isSlot":false,"src":"1173:15:30","valueSize":1},{"declaration":7339,"isOffset":false,"isSlot":false,"src":"1251:15:30","valueSize":1},{"declaration":7375,"isOffset":false,"isSlot":false,"src":"1159:4:30","valueSize":1},{"declaration":7375,"isOffset":false,"isSlot":false,"src":"1234:4:30","valueSize":1},{"declaration":7378,"isOffset":false,"isSlot":false,"src":"1280:5:30","valueSize":1}],"flags":["memory-safe"],"id":7380,"nodeType":"InlineAssembly","src":"1088:252:30"}]},"id":7382,"implemented":true,"kind":"function","modifiers":[],"name":"isValidProtocolFee","nameLocation":"896:18:30","nodeType":"FunctionDefinition","parameters":{"id":7376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7375,"mutability":"mutable","name":"self","nameLocation":"922:4:30","nodeType":"VariableDeclaration","scope":7382,"src":"915:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7374,"name":"uint24","nodeType":"ElementaryTypeName","src":"915:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"914:13:30"},"returnParameters":{"id":7379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7378,"mutability":"mutable","name":"valid","nameLocation":"956:5:30","nodeType":"VariableDeclaration","scope":7382,"src":"951:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7377,"name":"bool","nodeType":"ElementaryTypeName","src":"951:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"950:12:30"},"scope":7395,"src":"887:459:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7393,"nodeType":"Block","src":"1787:323:30","statements":[{"AST":{"nativeSrc":"1889:215:30","nodeType":"YulBlock","src":"1889:215:30","statements":[{"nativeSrc":"1903:24:30","nodeType":"YulAssignment","src":"1903:24:30","value":{"arguments":[{"name":"self","nativeSrc":"1915:4:30","nodeType":"YulIdentifier","src":"1915:4:30"},{"kind":"number","nativeSrc":"1921:5:30","nodeType":"YulLiteral","src":"1921:5:30","type":"","value":"0xfff"}],"functionName":{"name":"and","nativeSrc":"1911:3:30","nodeType":"YulIdentifier","src":"1911:3:30"},"nativeSrc":"1911:16:30","nodeType":"YulFunctionCall","src":"1911:16:30"},"variableNames":[{"name":"self","nativeSrc":"1903:4:30","nodeType":"YulIdentifier","src":"1903:4:30"}]},{"nativeSrc":"1940:29:30","nodeType":"YulAssignment","src":"1940:29:30","value":{"arguments":[{"name":"lpFee","nativeSrc":"1953:5:30","nodeType":"YulIdentifier","src":"1953:5:30"},{"kind":"number","nativeSrc":"1960:8:30","nodeType":"YulLiteral","src":"1960:8:30","type":"","value":"0xffffff"}],"functionName":{"name":"and","nativeSrc":"1949:3:30","nodeType":"YulIdentifier","src":"1949:3:30"},"nativeSrc":"1949:20:30","nodeType":"YulFunctionCall","src":"1949:20:30"},"variableNames":[{"name":"lpFee","nativeSrc":"1940:5:30","nodeType":"YulIdentifier","src":"1940:5:30"}]},{"nativeSrc":"1982:33:30","nodeType":"YulVariableDeclaration","src":"1982:33:30","value":{"arguments":[{"name":"self","nativeSrc":"2003:4:30","nodeType":"YulIdentifier","src":"2003:4:30"},{"name":"lpFee","nativeSrc":"2009:5:30","nodeType":"YulIdentifier","src":"2009:5:30"}],"functionName":{"name":"mul","nativeSrc":"1999:3:30","nodeType":"YulIdentifier","src":"1999:3:30"},"nativeSrc":"1999:16:30","nodeType":"YulFunctionCall","src":"1999:16:30"},"variables":[{"name":"numerator","nativeSrc":"1986:9:30","nodeType":"YulTypedName","src":"1986:9:30","type":""}]},{"nativeSrc":"2028:66:30","nodeType":"YulAssignment","src":"2028:66:30","value":{"arguments":[{"arguments":[{"name":"self","nativeSrc":"2047:4:30","nodeType":"YulIdentifier","src":"2047:4:30"},{"name":"lpFee","nativeSrc":"2053:5:30","nodeType":"YulIdentifier","src":"2053:5:30"}],"functionName":{"name":"add","nativeSrc":"2043:3:30","nodeType":"YulIdentifier","src":"2043:3:30"},"nativeSrc":"2043:16:30","nodeType":"YulFunctionCall","src":"2043:16:30"},{"arguments":[{"name":"numerator","nativeSrc":"2065:9:30","nodeType":"YulIdentifier","src":"2065:9:30"},{"name":"PIPS_DENOMINATOR","nativeSrc":"2076:16:30","nodeType":"YulIdentifier","src":"2076:16:30"}],"functionName":{"name":"div","nativeSrc":"2061:3:30","nodeType":"YulIdentifier","src":"2061:3:30"},"nativeSrc":"2061:32:30","nodeType":"YulFunctionCall","src":"2061:32:30"}],"functionName":{"name":"sub","nativeSrc":"2039:3:30","nodeType":"YulIdentifier","src":"2039:3:30"},"nativeSrc":"2039:55:30","nodeType":"YulFunctionCall","src":"2039:55:30"},"variableNames":[{"name":"swapFee","nativeSrc":"2028:7:30","nodeType":"YulIdentifier","src":"2028:7:30"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7343,"isOffset":false,"isSlot":false,"src":"2076:16:30","valueSize":1},{"declaration":7387,"isOffset":false,"isSlot":false,"src":"1940:5:30","valueSize":1},{"declaration":7387,"isOffset":false,"isSlot":false,"src":"1953:5:30","valueSize":1},{"declaration":7387,"isOffset":false,"isSlot":false,"src":"2009:5:30","valueSize":1},{"declaration":7387,"isOffset":false,"isSlot":false,"src":"2053:5:30","valueSize":1},{"declaration":7385,"isOffset":false,"isSlot":false,"src":"1903:4:30","valueSize":1},{"declaration":7385,"isOffset":false,"isSlot":false,"src":"1915:4:30","valueSize":1},{"declaration":7385,"isOffset":false,"isSlot":false,"src":"2003:4:30","valueSize":1},{"declaration":7385,"isOffset":false,"isSlot":false,"src":"2047:4:30","valueSize":1},{"declaration":7390,"isOffset":false,"isSlot":false,"src":"2028:7:30","valueSize":1}],"flags":["memory-safe"],"id":7392,"nodeType":"InlineAssembly","src":"1864:240:30"}]},"documentation":{"id":7383,"nodeType":"StructuredDocumentation","src":"1590:100:30","text":"@dev here `self` is just a single direction's protocol fee, not a packed type of 2 protocol fees"},"id":7394,"implemented":true,"kind":"function","modifiers":[],"name":"calculateSwapFee","nameLocation":"1704:16:30","nodeType":"FunctionDefinition","parameters":{"id":7388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7385,"mutability":"mutable","name":"self","nameLocation":"1728:4:30","nodeType":"VariableDeclaration","scope":7394,"src":"1721:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":7384,"name":"uint16","nodeType":"ElementaryTypeName","src":"1721:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":7387,"mutability":"mutable","name":"lpFee","nameLocation":"1741:5:30","nodeType":"VariableDeclaration","scope":7394,"src":"1734:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7386,"name":"uint24","nodeType":"ElementaryTypeName","src":"1734:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1720:27:30"},"returnParameters":{"id":7391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7390,"mutability":"mutable","name":"swapFee","nameLocation":"1778:7:30","nodeType":"VariableDeclaration","scope":7394,"src":"1771:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7389,"name":"uint24","nodeType":"ElementaryTypeName","src":"1771:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1770:16:30"},"scope":7395,"src":"1695:415:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7396,"src":"115:1997:30","usedErrors":[],"usedEvents":[]}],"src":"32:2081:30"},"id":30},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol","exportedSymbols":{"CustomRevert":[2358],"SafeCast":[5751]},"id":5752,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5577,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:31"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./CustomRevert.sol","id":5579,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5752,"sourceUnit":2359,"src":"57:48:31","symbolAliases":[{"foreign":{"id":5578,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"65:12:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":5580,"nodeType":"StructuredDocumentation","src":"107:94:31","text":"@title Safe casting methods\n @notice Contains methods for safely casting between types"},"fullyImplemented":true,"id":5751,"linearizedBaseContracts":[5751],"name":"SafeCast","nameLocation":"209:8:31","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5583,"libraryName":{"id":5581,"name":"CustomRevert","nameLocations":["230:12:31"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"230:12:31"},"nodeType":"UsingForDirective","src":"224:30:31","typeName":{"id":5582,"name":"bytes4","nodeType":"ElementaryTypeName","src":"247:6:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"errorSelector":"93dafdf1","id":5585,"name":"SafeCastOverflow","nameLocation":"266:16:31","nodeType":"ErrorDefinition","parameters":{"id":5584,"nodeType":"ParameterList","parameters":[],"src":"282:2:31"},"src":"260:25:31"},{"body":{"id":5611,"nodeType":"Block","src":"524:91:31","statements":[{"expression":{"id":5598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5593,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5591,"src":"534:1:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5596,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"546:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"538:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5594,"name":"uint160","nodeType":"ElementaryTypeName","src":"538:7:31","typeDescriptions":{}}},"id":5597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"538:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"534:14:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5599,"nodeType":"ExpressionStatement","src":"534:14:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5600,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5591,"src":"562:1:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5601,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"567:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"562:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5610,"nodeType":"IfStatement","src":"558:50:31","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5603,"name":"SafeCastOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"570:16:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"587:8:31","memberName":"selector","nodeType":"MemberAccess","src":"570:25:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"596:10:31","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"570:36:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"570:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5609,"nodeType":"ExpressionStatement","src":"570:38:31"}}]},"documentation":{"id":5586,"nodeType":"StructuredDocumentation","src":"291:164:31","text":"@notice Cast a uint256 to a uint160, revert on overflow\n @param x The uint256 to be downcasted\n @return y The downcasted integer, now type uint160"},"id":5612,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"469:9:31","nodeType":"FunctionDefinition","parameters":{"id":5589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5588,"mutability":"mutable","name":"x","nameLocation":"487:1:31","nodeType":"VariableDeclaration","scope":5612,"src":"479:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5587,"name":"uint256","nodeType":"ElementaryTypeName","src":"479:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"478:11:31"},"returnParameters":{"id":5592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5591,"mutability":"mutable","name":"y","nameLocation":"521:1:31","nodeType":"VariableDeclaration","scope":5612,"src":"513:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5590,"name":"uint160","nodeType":"ElementaryTypeName","src":"513:7:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"512:11:31"},"scope":5751,"src":"460:155:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5638,"nodeType":"Block","src":"854:91:31","statements":[{"expression":{"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5620,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5618,"src":"864:1:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5623,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"876:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"868:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5621,"name":"uint128","nodeType":"ElementaryTypeName","src":"868:7:31","typeDescriptions":{}}},"id":5624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"868:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"864:14:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5626,"nodeType":"ExpressionStatement","src":"864:14:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5627,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"892:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5628,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5618,"src":"897:1:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"892:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5637,"nodeType":"IfStatement","src":"888:50:31","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5630,"name":"SafeCastOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"900:16:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"917:8:31","memberName":"selector","nodeType":"MemberAccess","src":"900:25:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"926:10:31","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"900:36:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"900:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5636,"nodeType":"ExpressionStatement","src":"900:38:31"}}]},"documentation":{"id":5613,"nodeType":"StructuredDocumentation","src":"621:164:31","text":"@notice Cast a uint256 to a uint128, revert on overflow\n @param x The uint256 to be downcasted\n @return y The downcasted integer, now type uint128"},"id":5639,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"799:9:31","nodeType":"FunctionDefinition","parameters":{"id":5616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5615,"mutability":"mutable","name":"x","nameLocation":"817:1:31","nodeType":"VariableDeclaration","scope":5639,"src":"809:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5614,"name":"uint256","nodeType":"ElementaryTypeName","src":"809:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"808:11:31"},"returnParameters":{"id":5619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5618,"mutability":"mutable","name":"y","nameLocation":"851:1:31","nodeType":"VariableDeclaration","scope":5639,"src":"843:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5617,"name":"uint128","nodeType":"ElementaryTypeName","src":"843:7:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"842:11:31"},"scope":5751,"src":"790:155:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5665,"nodeType":"Block","src":"1186:90:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5647,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5642,"src":"1200:1:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1204:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1200:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5657,"nodeType":"IfStatement","src":"1196:49:31","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5650,"name":"SafeCastOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"1207:16:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1224:8:31","memberName":"selector","nodeType":"MemberAccess","src":"1207:25:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1233:10:31","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"1207:36:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1207:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5656,"nodeType":"ExpressionStatement","src":"1207:38:31"}},{"expression":{"id":5663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5658,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"1255:1:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5661,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5642,"src":"1267:1:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":5660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1259:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5659,"name":"uint128","nodeType":"ElementaryTypeName","src":"1259:7:31","typeDescriptions":{}}},"id":5662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1259:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1255:14:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5664,"nodeType":"ExpressionStatement","src":"1255:14:31"}]},"documentation":{"id":5640,"nodeType":"StructuredDocumentation","src":"951:167:31","text":"@notice Cast a int128 to a uint128, revert on overflow or underflow\n @param x The int128 to be casted\n @return y The casted integer, now type uint128"},"id":5666,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"1132:9:31","nodeType":"FunctionDefinition","parameters":{"id":5643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5642,"mutability":"mutable","name":"x","nameLocation":"1149:1:31","nodeType":"VariableDeclaration","scope":5666,"src":"1142:8:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5641,"name":"int128","nodeType":"ElementaryTypeName","src":"1142:6:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1141:10:31"},"returnParameters":{"id":5646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5645,"mutability":"mutable","name":"y","nameLocation":"1183:1:31","nodeType":"VariableDeclaration","scope":5666,"src":"1175:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5644,"name":"uint128","nodeType":"ElementaryTypeName","src":"1175:7:31","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1174:11:31"},"scope":5751,"src":"1123:153:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5692,"nodeType":"Block","src":"1521:90:31","statements":[{"expression":{"id":5679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5674,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5672,"src":"1531:1:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5677,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"1542:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1535:6:31","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":5675,"name":"int128","nodeType":"ElementaryTypeName","src":"1535:6:31","typeDescriptions":{}}},"id":5678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1535:9:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"1531:13:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":5680,"nodeType":"ExpressionStatement","src":"1531:13:31"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5681,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5672,"src":"1558:1:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5682,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"1563:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1558:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5691,"nodeType":"IfStatement","src":"1554:50:31","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5684,"name":"SafeCastOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"1566:16:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1583:8:31","memberName":"selector","nodeType":"MemberAccess","src":"1566:25:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1592:10:31","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"1566:36:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1566:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5690,"nodeType":"ExpressionStatement","src":"1566:38:31"}}]},"documentation":{"id":5667,"nodeType":"StructuredDocumentation","src":"1282:173:31","text":"@notice Cast a int256 to a int128, revert on overflow or underflow\n @param x The int256 to be downcasted\n @return y The downcasted integer, now type int128"},"id":5693,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"1469:8:31","nodeType":"FunctionDefinition","parameters":{"id":5670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5669,"mutability":"mutable","name":"x","nameLocation":"1485:1:31","nodeType":"VariableDeclaration","scope":5693,"src":"1478:8:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5668,"name":"int256","nodeType":"ElementaryTypeName","src":"1478:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1477:10:31"},"returnParameters":{"id":5673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5672,"mutability":"mutable","name":"y","nameLocation":"1518:1:31","nodeType":"VariableDeclaration","scope":5693,"src":"1511:8:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5671,"name":"int128","nodeType":"ElementaryTypeName","src":"1511:6:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1510:10:31"},"scope":5751,"src":"1460:151:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5719,"nodeType":"Block","src":"1838:89:31","statements":[{"expression":{"id":5706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5701,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5699,"src":"1848:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5704,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"1859:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1852:6:31","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5702,"name":"int256","nodeType":"ElementaryTypeName","src":"1852:6:31","typeDescriptions":{}}},"id":5705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1852:9:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1848:13:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5707,"nodeType":"ExpressionStatement","src":"1848:13:31"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5708,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5699,"src":"1875:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1879:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1875:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5718,"nodeType":"IfStatement","src":"1871:49:31","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5711,"name":"SafeCastOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"1882:16:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1899:8:31","memberName":"selector","nodeType":"MemberAccess","src":"1882:25:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1908:10:31","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"1882:36:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1882:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5717,"nodeType":"ExpressionStatement","src":"1882:38:31"}}]},"documentation":{"id":5694,"nodeType":"StructuredDocumentation","src":"1617:154:31","text":"@notice Cast a uint256 to a int256, revert on overflow\n @param x The uint256 to be casted\n @return y The casted integer, now type int256"},"id":5720,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"1785:8:31","nodeType":"FunctionDefinition","parameters":{"id":5697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5696,"mutability":"mutable","name":"x","nameLocation":"1802:1:31","nodeType":"VariableDeclaration","scope":5720,"src":"1794:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5695,"name":"uint256","nodeType":"ElementaryTypeName","src":"1794:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1793:11:31"},"returnParameters":{"id":5700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5699,"mutability":"mutable","name":"y","nameLocation":"1835:1:31","nodeType":"VariableDeclaration","scope":5720,"src":"1828:8:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5698,"name":"int256","nodeType":"ElementaryTypeName","src":"1828:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1827:10:31"},"scope":5751,"src":"1776:151:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5749,"nodeType":"Block","src":"2158:108:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5728,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"2172:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_170141183460469231731687303715884105728_by_1","typeString":"int_const 1701...(31 digits omitted)...5728"},"id":5731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2177:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313237","id":5730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2182:3:31","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"2177:8:31","typeDescriptions":{"typeIdentifier":"t_rational_170141183460469231731687303715884105728_by_1","typeString":"int_const 1701...(31 digits omitted)...5728"}},"src":"2172:13:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5740,"nodeType":"IfStatement","src":"2168:57:31","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5733,"name":"SafeCastOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"2187:16:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2204:8:31","memberName":"selector","nodeType":"MemberAccess","src":"2187:25:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2213:10:31","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2274,"src":"2187:36:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4) pure"}},"id":5738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2187:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5739,"nodeType":"ExpressionStatement","src":"2187:38:31"}},{"expression":{"arguments":[{"arguments":[{"id":5745,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"2256:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2249:6:31","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5743,"name":"int256","nodeType":"ElementaryTypeName","src":"2249:6:31","typeDescriptions":{}}},"id":5746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:9:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2242:6:31","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":5741,"name":"int128","nodeType":"ElementaryTypeName","src":"2242:6:31","typeDescriptions":{}}},"id":5747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2242:17:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"functionReturnParameters":5727,"id":5748,"nodeType":"Return","src":"2235:24:31"}]},"documentation":{"id":5721,"nodeType":"StructuredDocumentation","src":"1933:160:31","text":"@notice Cast a uint256 to a int128, revert on overflow\n @param x The uint256 to be downcasted\n @return The downcasted integer, now type int128"},"id":5750,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"2107:8:31","nodeType":"FunctionDefinition","parameters":{"id":5724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5723,"mutability":"mutable","name":"x","nameLocation":"2124:1:31","nodeType":"VariableDeclaration","scope":5750,"src":"2116:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5722,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2115:11:31"},"returnParameters":{"id":5727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5750,"src":"2150:6:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5725,"name":"int128","nodeType":"ElementaryTypeName","src":"2150:6:31","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"2149:8:31"},"scope":5751,"src":"2098:168:31","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5752,"src":"201:2067:31","usedErrors":[5585],"usedEvents":[]}],"src":"32:2237:31"},"id":31},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SqrtPriceMath.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SqrtPriceMath.sol","exportedSymbols":{"FixedPoint96":[9031],"FullMath":[8913],"SafeCast":[5751],"SqrtPriceMath":[8114],"UnsafeMath":[8628]},"id":8115,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7625,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:32"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol","file":"./SafeCast.sol","id":7627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8115,"sourceUnit":5752,"src":"57:40:32","symbolAliases":[{"foreign":{"id":7626,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"65:8:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FullMath.sol","file":"./FullMath.sol","id":7629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8115,"sourceUnit":8914,"src":"99:40:32","symbolAliases":[{"foreign":{"id":7628,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"107:8:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/UnsafeMath.sol","file":"./UnsafeMath.sol","id":7631,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8115,"sourceUnit":8629,"src":"140:44:32","symbolAliases":[{"foreign":{"id":7630,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"148:10:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FixedPoint96.sol","file":"./FixedPoint96.sol","id":7633,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8115,"sourceUnit":9032,"src":"185:48:32","symbolAliases":[{"foreign":{"id":7632,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"193:12:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SqrtPriceMath","contractDependencies":[],"contractKind":"library","documentation":{"id":7634,"nodeType":"StructuredDocumentation","src":"235:167:32","text":"@title Functions based on Q64.96 sqrt price and liquidity\n @notice Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas"},"fullyImplemented":true,"id":8114,"linearizedBaseContracts":[8114],"name":"SqrtPriceMath","nameLocation":"410:13:32","nodeType":"ContractDefinition","nodes":[{"global":false,"id":7637,"libraryName":{"id":7635,"name":"SafeCast","nameLocations":["436:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":5751,"src":"436:8:32"},"nodeType":"UsingForDirective","src":"430:27:32","typeName":{"id":7636,"name":"uint256","nodeType":"ElementaryTypeName","src":"449:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"errorSelector":"4f2461b8","id":7639,"name":"InvalidPriceOrLiquidity","nameLocation":"469:23:32","nodeType":"ErrorDefinition","parameters":{"id":7638,"nodeType":"ParameterList","parameters":[],"src":"492:2:32"},"src":"463:32:32"},{"errorSelector":"00bfc921","id":7641,"name":"InvalidPrice","nameLocation":"506:12:32","nodeType":"ErrorDefinition","parameters":{"id":7640,"nodeType":"ParameterList","parameters":[],"src":"518:2:32"},"src":"500:21:32"},{"errorSelector":"4323a555","id":7643,"name":"NotEnoughLiquidity","nameLocation":"532:18:32","nodeType":"ErrorDefinition","parameters":{"id":7642,"nodeType":"ParameterList","parameters":[],"src":"550:2:32"},"src":"526:27:32"},{"errorSelector":"f5c787f1","id":7645,"name":"PriceOverflow","nameLocation":"564:13:32","nodeType":"ErrorDefinition","parameters":{"id":7644,"nodeType":"ParameterList","parameters":[],"src":"577:2:32"},"src":"558:22:32"},{"body":{"id":7751,"nodeType":"Block","src":"1705:1895:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7659,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"1831:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1841:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1831:11:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7664,"nodeType":"IfStatement","src":"1827:32:32","trueBody":{"expression":{"id":7662,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"1851:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7658,"id":7663,"nodeType":"Return","src":"1844:15:32"}},{"assignments":[7666],"declarations":[{"constant":false,"id":7666,"mutability":"mutable","name":"numerator1","nameLocation":"1877:10:32","nodeType":"VariableDeclaration","scope":7751,"src":"1869:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1869:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7674,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7669,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"1898:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":7668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1890:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7667,"name":"uint256","nodeType":"ElementaryTypeName","src":"1890:7:32","typeDescriptions":{}}},"id":7670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1890:18:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":7671,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"1912:12:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$9031_$","typeString":"type(library FixedPoint96)"}},"id":7672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1925:10:32","memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":9027,"src":"1912:23:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1890:45:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1869:66:32"},{"condition":{"id":7675,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7654,"src":"1950:3:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7749,"nodeType":"Block","src":"2576:1018:32","statements":[{"id":7748,"nodeType":"UncheckedBlock","src":"2590:994:32","statements":[{"assignments":[7727],"declarations":[{"constant":false,"id":7727,"mutability":"mutable","name":"product","nameLocation":"2626:7:32","nodeType":"VariableDeclaration","scope":7748,"src":"2618:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7726,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7731,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7728,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2636:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7729,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"2645:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2636:17:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2618:35:32"},{"AST":{"nativeSrc":"2976:437:32","nodeType":"YulBlock","src":"2976:437:32","statements":[{"body":{"nativeSrc":"3251:144:32","nodeType":"YulBlock","src":"3251:144:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3284:1:32","nodeType":"YulLiteral","src":"3284:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"3287:10:32","nodeType":"YulLiteral","src":"3287:10:32","type":"","value":"0xf5c787f1"}],"functionName":{"name":"mstore","nativeSrc":"3277:6:32","nodeType":"YulIdentifier","src":"3277:6:32"},"nativeSrc":"3277:21:32","nodeType":"YulFunctionCall","src":"3277:21:32"},"nativeSrc":"3277:21:32","nodeType":"YulExpressionStatement","src":"3277:21:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3362:4:32","nodeType":"YulLiteral","src":"3362:4:32","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"3368:4:32","nodeType":"YulLiteral","src":"3368:4:32","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"3355:6:32","nodeType":"YulIdentifier","src":"3355:6:32"},"nativeSrc":"3355:18:32","nodeType":"YulFunctionCall","src":"3355:18:32"},"nativeSrc":"3355:18:32","nodeType":"YulExpressionStatement","src":"3355:18:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"product","nativeSrc":"3073:7:32","nodeType":"YulIdentifier","src":"3073:7:32"},{"name":"amount","nativeSrc":"3082:6:32","nodeType":"YulIdentifier","src":"3082:6:32"}],"functionName":{"name":"div","nativeSrc":"3069:3:32","nodeType":"YulIdentifier","src":"3069:3:32"},"nativeSrc":"3069:20:32","nodeType":"YulFunctionCall","src":"3069:20:32"},{"arguments":[{"name":"sqrtPX96","nativeSrc":"3095:8:32","nodeType":"YulIdentifier","src":"3095:8:32"},{"kind":"number","nativeSrc":"3105:42:32","nodeType":"YulLiteral","src":"3105:42:32","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3091:3:32","nodeType":"YulIdentifier","src":"3091:3:32"},"nativeSrc":"3091:57:32","nodeType":"YulFunctionCall","src":"3091:57:32"}],"functionName":{"name":"eq","nativeSrc":"3066:2:32","nodeType":"YulIdentifier","src":"3066:2:32"},"nativeSrc":"3066:83:32","nodeType":"YulFunctionCall","src":"3066:83:32"},{"arguments":[{"name":"numerator1","nativeSrc":"3182:10:32","nodeType":"YulIdentifier","src":"3182:10:32"},{"name":"product","nativeSrc":"3194:7:32","nodeType":"YulIdentifier","src":"3194:7:32"}],"functionName":{"name":"gt","nativeSrc":"3179:2:32","nodeType":"YulIdentifier","src":"3179:2:32"},"nativeSrc":"3179:23:32","nodeType":"YulFunctionCall","src":"3179:23:32"}],"functionName":{"name":"and","nativeSrc":"3033:3:32","nodeType":"YulIdentifier","src":"3033:3:32"},"nativeSrc":"3033:195:32","nodeType":"YulFunctionCall","src":"3033:195:32"}],"functionName":{"name":"iszero","nativeSrc":"3001:6:32","nodeType":"YulIdentifier","src":"3001:6:32"},"nativeSrc":"3001:249:32","nodeType":"YulFunctionCall","src":"3001:249:32"},"nativeSrc":"2998:397:32","nodeType":"YulIf","src":"2998:397:32"}]},"evmVersion":"cancun","externalReferences":[{"declaration":7652,"isOffset":false,"isSlot":false,"src":"3082:6:32","valueSize":1},{"declaration":7666,"isOffset":false,"isSlot":false,"src":"3182:10:32","valueSize":1},{"declaration":7727,"isOffset":false,"isSlot":false,"src":"3073:7:32","valueSize":1},{"declaration":7727,"isOffset":false,"isSlot":false,"src":"3194:7:32","valueSize":1},{"declaration":7648,"isOffset":false,"isSlot":false,"src":"3095:8:32","valueSize":1}],"flags":["memory-safe"],"id":7732,"nodeType":"InlineAssembly","src":"2951:462:32"},{"assignments":[7734],"declarations":[{"constant":false,"id":7734,"mutability":"mutable","name":"denominator","nameLocation":"3438:11:32","nodeType":"VariableDeclaration","scope":7748,"src":"3430:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7733,"name":"uint256","nodeType":"ElementaryTypeName","src":"3430:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7738,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7735,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"3452:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7736,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7727,"src":"3465:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3452:20:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3430:42:32"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7741,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"3523:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7742,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"3535:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7743,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7734,"src":"3545:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7739,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"3497:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":7740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3506:16:32","memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8912,"src":"3497:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3497:60:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3558:9:32","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":5612,"src":"3497:70:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":7746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3497:72:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7658,"id":7747,"nodeType":"Return","src":"3490:79:32"}]}]},"id":7750,"nodeType":"IfStatement","src":"1946:1648:32","trueBody":{"id":7725,"nodeType":"Block","src":"1955:615:32","statements":[{"id":7710,"nodeType":"UncheckedBlock","src":"1969:440:32","statements":[{"assignments":[7677],"declarations":[{"constant":false,"id":7677,"mutability":"mutable","name":"product","nameLocation":"2005:7:32","nodeType":"VariableDeclaration","scope":7710,"src":"1997:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7676,"name":"uint256","nodeType":"ElementaryTypeName","src":"1997:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7681,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7678,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2015:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7679,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"2024:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2015:17:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1997:35:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7682,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"2054:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7683,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2064:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2054:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7685,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"2074:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2054:28:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7709,"nodeType":"IfStatement","src":"2050:345:32","trueBody":{"id":7708,"nodeType":"Block","src":"2084:311:32","statements":[{"assignments":[7688],"declarations":[{"constant":false,"id":7688,"mutability":"mutable","name":"denominator","nameLocation":"2114:11:32","nodeType":"VariableDeclaration","scope":7708,"src":"2106:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7687,"name":"uint256","nodeType":"ElementaryTypeName","src":"2106:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7692,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7689,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"2128:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7690,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"2141:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2128:20:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2106:42:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7693,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"2174:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7694,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"2189:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2174:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7707,"nodeType":"IfStatement","src":"2170:207:32","trueBody":{"id":7706,"nodeType":"Block","src":"2201:176:32","statements":[{"expression":{"arguments":[{"arguments":[{"id":7700,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"2319:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7701,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"2331:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7702,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"2341:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7698,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"2293:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2302:16:32","memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8912,"src":"2293:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2293:60:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2285:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7696,"name":"uint160","nodeType":"ElementaryTypeName","src":"2285:7:32","typeDescriptions":{}}},"id":7704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2285:69:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7658,"id":7705,"nodeType":"Return","src":"2278:76:32"}]}}]}}]},{"expression":{"arguments":[{"arguments":[{"id":7715,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"2513:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7716,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"2526:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7717,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"2539:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2526:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7719,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2525:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7720,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2551:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2525:32:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7713,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"2488:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$8628_$","typeString":"type(library UnsafeMath)"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2499:13:32","memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"2488:24:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2488:70:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2480:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7711,"name":"uint160","nodeType":"ElementaryTypeName","src":"2480:7:32","typeDescriptions":{}}},"id":7723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2480:79:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7658,"id":7724,"nodeType":"Return","src":"2473:86:32"}]}}]},"documentation":{"id":7646,"nodeType":"StructuredDocumentation","src":"586:944:32","text":"@notice Gets the next sqrt price given a delta of currency0\n @dev Always rounds up, because in the exact output case (increasing price) we need to move the price at least\n far enough to get the desired output amount, and in the exact input case (decreasing price) we need to move the\n price less in order to not send too much output.\n The most precise formula for this is liquidity * sqrtPX96 / (liquidity +- amount * sqrtPX96),\n if this is impossible because of overflow, we calculate liquidity / (liquidity / sqrtPX96 +- amount).\n @param sqrtPX96 The starting price, i.e. before accounting for the currency0 delta\n @param liquidity The amount of usable liquidity\n @param amount How much of currency0 to add or remove from virtual reserves\n @param add Whether to add or remove the amount of currency0\n @return The price after adding or removing amount, depending on add"},"id":7752,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromAmount0RoundingUp","nameLocation":"1544:37:32","nodeType":"FunctionDefinition","parameters":{"id":7655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7648,"mutability":"mutable","name":"sqrtPX96","nameLocation":"1590:8:32","nodeType":"VariableDeclaration","scope":7752,"src":"1582:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7647,"name":"uint160","nodeType":"ElementaryTypeName","src":"1582:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7650,"mutability":"mutable","name":"liquidity","nameLocation":"1608:9:32","nodeType":"VariableDeclaration","scope":7752,"src":"1600:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7649,"name":"uint128","nodeType":"ElementaryTypeName","src":"1600:7:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":7652,"mutability":"mutable","name":"amount","nameLocation":"1627:6:32","nodeType":"VariableDeclaration","scope":7752,"src":"1619:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7651,"name":"uint256","nodeType":"ElementaryTypeName","src":"1619:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7654,"mutability":"mutable","name":"add","nameLocation":"1640:3:32","nodeType":"VariableDeclaration","scope":7752,"src":"1635:8:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7653,"name":"bool","nodeType":"ElementaryTypeName","src":"1635:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1581:63:32"},"returnParameters":{"id":7658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7752,"src":"1692:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7656,"name":"uint160","nodeType":"ElementaryTypeName","src":"1692:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1691:9:32"},"scope":8114,"src":"1535:2065:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7842,"nodeType":"Block","src":"4610:1278:32","statements":[{"condition":{"id":7766,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"4778:3:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7840,"nodeType":"Block","src":"5101:781:32","statements":[{"assignments":[7805],"declarations":[{"constant":false,"id":7805,"mutability":"mutable","name":"quotient","nameLocation":"5123:8:32","nodeType":"VariableDeclaration","scope":7840,"src":"5115:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7804,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7830,"initialValue":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7806,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5152:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":7809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5167:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7808,"name":"uint160","nodeType":"ElementaryTypeName","src":"5167:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":7807,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5162:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5162:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":7811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5176:3:32","memberName":"max","nodeType":"MemberAccess","src":"5162:17:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5152:27:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7823,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5321:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7824,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"5329:12:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$9031_$","typeString":"type(library FixedPoint96)"}},"id":7825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5342:3:32","memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":9030,"src":"5329:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7826,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7757,"src":"5347:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":7821,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"5295:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":7822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5304:16:32","memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8912,"src":"5295:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5295:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5152:205:32","trueExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5227:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":7816,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"5237:12:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$9031_$","typeString":"type(library FixedPoint96)"}},"id":7817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5250:10:32","memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":9027,"src":"5237:23:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5227:33:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7819,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7757,"src":"5262:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":7813,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"5202:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$8628_$","typeString":"type(library UnsafeMath)"}},"id":7814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5213:13:32","memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"5202:24:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5202:70:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7829,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5134:237:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5115:256:32"},{"AST":{"nativeSrc":"5493:252:32","nodeType":"YulBlock","src":"5493:252:32","statements":[{"body":{"nativeSrc":"5594:137:32","nodeType":"YulBlock","src":"5594:137:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5623:1:32","nodeType":"YulLiteral","src":"5623:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"5626:10:32","nodeType":"YulLiteral","src":"5626:10:32","type":"","value":"0x4323a555"}],"functionName":{"name":"mstore","nativeSrc":"5616:6:32","nodeType":"YulIdentifier","src":"5616:6:32"},"nativeSrc":"5616:21:32","nodeType":"YulFunctionCall","src":"5616:21:32"},"nativeSrc":"5616:21:32","nodeType":"YulExpressionStatement","src":"5616:21:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5702:4:32","nodeType":"YulLiteral","src":"5702:4:32","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"5708:4:32","nodeType":"YulLiteral","src":"5708:4:32","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"5695:6:32","nodeType":"YulIdentifier","src":"5695:6:32"},"nativeSrc":"5695:18:32","nodeType":"YulFunctionCall","src":"5695:18:32"},"nativeSrc":"5695:18:32","nodeType":"YulExpressionStatement","src":"5695:18:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"sqrtPX96","nativeSrc":"5528:8:32","nodeType":"YulIdentifier","src":"5528:8:32"},{"kind":"number","nativeSrc":"5538:42:32","nodeType":"YulLiteral","src":"5538:42:32","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5524:3:32","nodeType":"YulIdentifier","src":"5524:3:32"},"nativeSrc":"5524:57:32","nodeType":"YulFunctionCall","src":"5524:57:32"},{"name":"quotient","nativeSrc":"5583:8:32","nodeType":"YulIdentifier","src":"5583:8:32"}],"functionName":{"name":"gt","nativeSrc":"5521:2:32","nodeType":"YulIdentifier","src":"5521:2:32"},"nativeSrc":"5521:71:32","nodeType":"YulFunctionCall","src":"5521:71:32"}],"functionName":{"name":"iszero","nativeSrc":"5514:6:32","nodeType":"YulIdentifier","src":"5514:6:32"},"nativeSrc":"5514:79:32","nodeType":"YulFunctionCall","src":"5514:79:32"},"nativeSrc":"5511:220:32","nodeType":"YulIf","src":"5511:220:32"}]},"evmVersion":"cancun","externalReferences":[{"declaration":7805,"isOffset":false,"isSlot":false,"src":"5583:8:32","valueSize":1},{"declaration":7755,"isOffset":false,"isSlot":false,"src":"5528:8:32","valueSize":1}],"flags":["memory-safe"],"id":7831,"nodeType":"InlineAssembly","src":"5468:277:32"},{"id":7839,"nodeType":"UncheckedBlock","src":"5794:78:32","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7834,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"5837:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7835,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7805,"src":"5848:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5837:19:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5829:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7832,"name":"uint160","nodeType":"ElementaryTypeName","src":"5829:7:32","typeDescriptions":{}}},"id":7837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:28:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7765,"id":7838,"nodeType":"Return","src":"5822:35:32"}]}]},"id":7841,"nodeType":"IfStatement","src":"4774:1108:32","trueBody":{"id":7803,"nodeType":"Block","src":"4783:312:32","statements":[{"assignments":[7768],"declarations":[{"constant":false,"id":7768,"mutability":"mutable","name":"quotient","nameLocation":"4805:8:32","nodeType":"VariableDeclaration","scope":7803,"src":"4797:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4797:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7792,"initialValue":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7769,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"4834:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":7772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4849:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7771,"name":"uint160","nodeType":"ElementaryTypeName","src":"4849:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":7770,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4844:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":7774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4858:3:32","memberName":"max","nodeType":"MemberAccess","src":"4844:17:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4834:27:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7785,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"4970:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7786,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"4978:12:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$9031_$","typeString":"type(library FixedPoint96)"}},"id":7787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4991:3:32","memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":9030,"src":"4978:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7788,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7757,"src":"4996:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":7783,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"4954:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":7784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4963:6:32","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8874,"src":"4954:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4954:52:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4834:172:32","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7776,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"4885:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":7777,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"4895:12:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$9031_$","typeString":"type(library FixedPoint96)"}},"id":7778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4908:10:32","memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":9027,"src":"4895:23:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4885:33:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7780,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4884:35:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7781,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7757,"src":"4922:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"4884:47:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7791,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4816:204:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4797:223:32"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7795,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"5051:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5043:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7793,"name":"uint256","nodeType":"ElementaryTypeName","src":"5043:7:32","typeDescriptions":{}}},"id":7796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5043:17:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7797,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7768,"src":"5063:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5043:28:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5042:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5073:9:32","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":5612,"src":"5042:40:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":7801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5042:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7765,"id":7802,"nodeType":"Return","src":"5035:49:32"}]}}]},"documentation":{"id":7753,"nodeType":"StructuredDocumentation","src":"3606:827:32","text":"@notice Gets the next sqrt price given a delta of currency1\n @dev Always rounds down, because in the exact output case (decreasing price) we need to move the price at least\n far enough to get the desired output amount, and in the exact input case (increasing price) we need to move the\n price less in order to not send too much output.\n The formula we compute is within <1 wei of the lossless version: sqrtPX96 +- amount / liquidity\n @param sqrtPX96 The starting price, i.e., before accounting for the currency1 delta\n @param liquidity The amount of usable liquidity\n @param amount How much of currency1 to add, or remove, from virtual reserves\n @param add Whether to add, or remove, the amount of currency1\n @return The price after adding or removing `amount`"},"id":7843,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromAmount1RoundingDown","nameLocation":"4447:39:32","nodeType":"FunctionDefinition","parameters":{"id":7762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7755,"mutability":"mutable","name":"sqrtPX96","nameLocation":"4495:8:32","nodeType":"VariableDeclaration","scope":7843,"src":"4487:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7754,"name":"uint160","nodeType":"ElementaryTypeName","src":"4487:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7757,"mutability":"mutable","name":"liquidity","nameLocation":"4513:9:32","nodeType":"VariableDeclaration","scope":7843,"src":"4505:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7756,"name":"uint128","nodeType":"ElementaryTypeName","src":"4505:7:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":7759,"mutability":"mutable","name":"amount","nameLocation":"4532:6:32","nodeType":"VariableDeclaration","scope":7843,"src":"4524:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7758,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7761,"mutability":"mutable","name":"add","nameLocation":"4545:3:32","nodeType":"VariableDeclaration","scope":7843,"src":"4540:8:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7760,"name":"bool","nodeType":"ElementaryTypeName","src":"4540:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4486:63:32"},"returnParameters":{"id":7765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7843,"src":"4597:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7763,"name":"uint160","nodeType":"ElementaryTypeName","src":"4597:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"4596:9:32"},"scope":8114,"src":"4438:1450:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7873,"nodeType":"Block","src":"6627:742:32","statements":[{"AST":{"nativeSrc":"6756:333:32","nodeType":"YulBlock","src":"6756:333:32","statements":[{"body":{"nativeSrc":"6949:130:32","nodeType":"YulBlock","src":"6949:130:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6974:1:32","nodeType":"YulLiteral","src":"6974:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"6977:10:32","nodeType":"YulLiteral","src":"6977:10:32","type":"","value":"0x4f2461b8"}],"functionName":{"name":"mstore","nativeSrc":"6967:6:32","nodeType":"YulIdentifier","src":"6967:6:32"},"nativeSrc":"6967:21:32","nodeType":"YulFunctionCall","src":"6967:21:32"},"nativeSrc":"6967:21:32","nodeType":"YulExpressionStatement","src":"6967:21:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7054:4:32","nodeType":"YulLiteral","src":"7054:4:32","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"7060:4:32","nodeType":"YulLiteral","src":"7060:4:32","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"7047:6:32","nodeType":"YulIdentifier","src":"7047:6:32"},"nativeSrc":"7047:18:32","nodeType":"YulFunctionCall","src":"7047:18:32"},"nativeSrc":"7047:18:32","nodeType":"YulExpressionStatement","src":"7047:18:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"sqrtPX96","nativeSrc":"6804:8:32","nodeType":"YulIdentifier","src":"6804:8:32"},{"kind":"number","nativeSrc":"6814:42:32","nodeType":"YulLiteral","src":"6814:42:32","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"6800:3:32","nodeType":"YulIdentifier","src":"6800:3:32"},"nativeSrc":"6800:57:32","nodeType":"YulFunctionCall","src":"6800:57:32"}],"functionName":{"name":"iszero","nativeSrc":"6793:6:32","nodeType":"YulIdentifier","src":"6793:6:32"},"nativeSrc":"6793:65:32","nodeType":"YulFunctionCall","src":"6793:65:32"},{"arguments":[{"arguments":[{"name":"liquidity","nativeSrc":"6887:9:32","nodeType":"YulIdentifier","src":"6887:9:32"},{"kind":"number","nativeSrc":"6898:34:32","nodeType":"YulLiteral","src":"6898:34:32","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"6883:3:32","nodeType":"YulIdentifier","src":"6883:3:32"},"nativeSrc":"6883:50:32","nodeType":"YulFunctionCall","src":"6883:50:32"}],"functionName":{"name":"iszero","nativeSrc":"6876:6:32","nodeType":"YulIdentifier","src":"6876:6:32"},"nativeSrc":"6876:58:32","nodeType":"YulFunctionCall","src":"6876:58:32"}],"functionName":{"name":"or","nativeSrc":"6773:2:32","nodeType":"YulIdentifier","src":"6773:2:32"},"nativeSrc":"6773:175:32","nodeType":"YulFunctionCall","src":"6773:175:32"},"nativeSrc":"6770:309:32","nodeType":"YulIf","src":"6770:309:32"}]},"evmVersion":"cancun","externalReferences":[{"declaration":7848,"isOffset":false,"isSlot":false,"src":"6887:9:32","valueSize":1},{"declaration":7846,"isOffset":false,"isSlot":false,"src":"6804:8:32","valueSize":1}],"flags":["memory-safe"],"id":7857,"nodeType":"InlineAssembly","src":"6731:358:32"},{"expression":{"condition":{"id":7858,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7852,"src":"7172:10:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7866,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7846,"src":"7326:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7867,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"7336:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":7868,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7850,"src":"7347:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":7869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7357:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7865,"name":"getNextSqrtPriceFromAmount1RoundingDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7843,"src":"7286:39:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":7870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7286:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":7871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7172:190:32","trueExpression":{"arguments":[{"id":7860,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7846,"src":"7235:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7861,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"7245:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":7862,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7850,"src":"7256:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":7863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7266:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7859,"name":"getNextSqrtPriceFromAmount0RoundingUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7752,"src":"7197:37:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":7864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7197:74:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7856,"id":7872,"nodeType":"Return","src":"7165:197:32"}]},"documentation":{"id":7844,"nodeType":"StructuredDocumentation","src":"5894:561:32","text":"@notice Gets the next sqrt price given an input amount of currency0 or currency1\n @dev Throws if price or liquidity are 0, or if the next price is out of bounds\n @param sqrtPX96 The starting price, i.e., before accounting for the input amount\n @param liquidity The amount of usable liquidity\n @param amountIn How much of currency0, or currency1, is being swapped in\n @param zeroForOne Whether the amount in is currency0 or currency1\n @return uint160 The price after adding the input amount to currency0 or currency1"},"id":7874,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromInput","nameLocation":"6469:25:32","nodeType":"FunctionDefinition","parameters":{"id":7853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7846,"mutability":"mutable","name":"sqrtPX96","nameLocation":"6503:8:32","nodeType":"VariableDeclaration","scope":7874,"src":"6495:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7845,"name":"uint160","nodeType":"ElementaryTypeName","src":"6495:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7848,"mutability":"mutable","name":"liquidity","nameLocation":"6521:9:32","nodeType":"VariableDeclaration","scope":7874,"src":"6513:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7847,"name":"uint128","nodeType":"ElementaryTypeName","src":"6513:7:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":7850,"mutability":"mutable","name":"amountIn","nameLocation":"6540:8:32","nodeType":"VariableDeclaration","scope":7874,"src":"6532:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7849,"name":"uint256","nodeType":"ElementaryTypeName","src":"6532:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7852,"mutability":"mutable","name":"zeroForOne","nameLocation":"6555:10:32","nodeType":"VariableDeclaration","scope":7874,"src":"6550:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7851,"name":"bool","nodeType":"ElementaryTypeName","src":"6550:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6494:72:32"},"returnParameters":{"id":7856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7874,"src":"6614:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7854,"name":"uint160","nodeType":"ElementaryTypeName","src":"6614:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"6613:9:32"},"scope":8114,"src":"6460:909:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7904,"nodeType":"Block","src":"8107:740:32","statements":[{"AST":{"nativeSrc":"8236:333:32","nodeType":"YulBlock","src":"8236:333:32","statements":[{"body":{"nativeSrc":"8429:130:32","nodeType":"YulBlock","src":"8429:130:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8454:1:32","nodeType":"YulLiteral","src":"8454:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"8457:10:32","nodeType":"YulLiteral","src":"8457:10:32","type":"","value":"0x4f2461b8"}],"functionName":{"name":"mstore","nativeSrc":"8447:6:32","nodeType":"YulIdentifier","src":"8447:6:32"},"nativeSrc":"8447:21:32","nodeType":"YulFunctionCall","src":"8447:21:32"},"nativeSrc":"8447:21:32","nodeType":"YulExpressionStatement","src":"8447:21:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8534:4:32","nodeType":"YulLiteral","src":"8534:4:32","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"8540:4:32","nodeType":"YulLiteral","src":"8540:4:32","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"8527:6:32","nodeType":"YulIdentifier","src":"8527:6:32"},"nativeSrc":"8527:18:32","nodeType":"YulFunctionCall","src":"8527:18:32"},"nativeSrc":"8527:18:32","nodeType":"YulExpressionStatement","src":"8527:18:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"sqrtPX96","nativeSrc":"8284:8:32","nodeType":"YulIdentifier","src":"8284:8:32"},{"kind":"number","nativeSrc":"8294:42:32","nodeType":"YulLiteral","src":"8294:42:32","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"8280:3:32","nodeType":"YulIdentifier","src":"8280:3:32"},"nativeSrc":"8280:57:32","nodeType":"YulFunctionCall","src":"8280:57:32"}],"functionName":{"name":"iszero","nativeSrc":"8273:6:32","nodeType":"YulIdentifier","src":"8273:6:32"},"nativeSrc":"8273:65:32","nodeType":"YulFunctionCall","src":"8273:65:32"},{"arguments":[{"arguments":[{"name":"liquidity","nativeSrc":"8367:9:32","nodeType":"YulIdentifier","src":"8367:9:32"},{"kind":"number","nativeSrc":"8378:34:32","nodeType":"YulLiteral","src":"8378:34:32","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"8363:3:32","nodeType":"YulIdentifier","src":"8363:3:32"},"nativeSrc":"8363:50:32","nodeType":"YulFunctionCall","src":"8363:50:32"}],"functionName":{"name":"iszero","nativeSrc":"8356:6:32","nodeType":"YulIdentifier","src":"8356:6:32"},"nativeSrc":"8356:58:32","nodeType":"YulFunctionCall","src":"8356:58:32"}],"functionName":{"name":"or","nativeSrc":"8253:2:32","nodeType":"YulIdentifier","src":"8253:2:32"},"nativeSrc":"8253:175:32","nodeType":"YulFunctionCall","src":"8253:175:32"},"nativeSrc":"8250:309:32","nodeType":"YulIf","src":"8250:309:32"}]},"evmVersion":"cancun","externalReferences":[{"declaration":7879,"isOffset":false,"isSlot":false,"src":"8367:9:32","valueSize":1},{"declaration":7877,"isOffset":false,"isSlot":false,"src":"8284:8:32","valueSize":1}],"flags":["memory-safe"],"id":7888,"nodeType":"InlineAssembly","src":"8211:358:32"},{"expression":{"condition":{"id":7889,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"8646:10:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7897,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7877,"src":"8802:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7898,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7879,"src":"8812:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":7899,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"8823:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":7900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8834:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7896,"name":"getNextSqrtPriceFromAmount0RoundingUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7752,"src":"8764:37:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":7901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8764:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":7902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8646:194:32","trueExpression":{"arguments":[{"id":7891,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7877,"src":"8711:8:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7892,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7879,"src":"8721:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":7893,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"8732:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":7894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8743:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7890,"name":"getNextSqrtPriceFromAmount1RoundingDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7843,"src":"8671:39:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":7895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:78:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7887,"id":7903,"nodeType":"Return","src":"8639:201:32"}]},"documentation":{"id":7875,"nodeType":"StructuredDocumentation","src":"7375:558:32","text":"@notice Gets the next sqrt price given an output amount of currency0 or currency1\n @dev Throws if price or liquidity are 0 or the next price is out of bounds\n @param sqrtPX96 The starting price before accounting for the output amount\n @param liquidity The amount of usable liquidity\n @param amountOut How much of currency0, or currency1, is being swapped out\n @param zeroForOne Whether the amount out is currency1 or currency0\n @return uint160 The price after removing the output amount of currency0 or currency1"},"id":7905,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromOutput","nameLocation":"7947:26:32","nodeType":"FunctionDefinition","parameters":{"id":7884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7877,"mutability":"mutable","name":"sqrtPX96","nameLocation":"7982:8:32","nodeType":"VariableDeclaration","scope":7905,"src":"7974:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7876,"name":"uint160","nodeType":"ElementaryTypeName","src":"7974:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7879,"mutability":"mutable","name":"liquidity","nameLocation":"8000:9:32","nodeType":"VariableDeclaration","scope":7905,"src":"7992:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7878,"name":"uint128","nodeType":"ElementaryTypeName","src":"7992:7:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":7881,"mutability":"mutable","name":"amountOut","nameLocation":"8019:9:32","nodeType":"VariableDeclaration","scope":7905,"src":"8011:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7880,"name":"uint256","nodeType":"ElementaryTypeName","src":"8011:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7883,"mutability":"mutable","name":"zeroForOne","nameLocation":"8035:10:32","nodeType":"VariableDeclaration","scope":7905,"src":"8030:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7882,"name":"bool","nodeType":"ElementaryTypeName","src":"8030:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7973:73:32"},"returnParameters":{"id":7887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7886,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7905,"src":"8094:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7885,"name":"uint160","nodeType":"ElementaryTypeName","src":"8094:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"8093:9:32"},"scope":8114,"src":"7938:909:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7970,"nodeType":"Block","src":"9562:886:32","statements":[{"id":7969,"nodeType":"UncheckedBlock","src":"9572:870:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7919,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"9600:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7920,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"9616:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9600:29:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7930,"nodeType":"IfStatement","src":"9596:98:32","trueBody":{"expression":{"id":7928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7922,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"9632:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7923,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"9647:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7924,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9631:30:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":7925,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"9665:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":7926,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"9680:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7927,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9664:30:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"9631:63:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7929,"nodeType":"ExpressionStatement","src":"9631:63:32"}},{"AST":{"nativeSrc":"9808:237:32","nodeType":"YulBlock","src":"9808:237:32","statements":[{"body":{"nativeSrc":"9900:131:32","nodeType":"YulBlock","src":"9900:131:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9929:1:32","nodeType":"YulLiteral","src":"9929:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"9932:10:32","nodeType":"YulLiteral","src":"9932:10:32","type":"","value":"0x00bfc921"}],"functionName":{"name":"mstore","nativeSrc":"9922:6:32","nodeType":"YulIdentifier","src":"9922:6:32"},"nativeSrc":"9922:21:32","nodeType":"YulFunctionCall","src":"9922:21:32"},"nativeSrc":"9922:21:32","nodeType":"YulExpressionStatement","src":"9922:21:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10002:4:32","nodeType":"YulLiteral","src":"10002:4:32","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"10008:4:32","nodeType":"YulLiteral","src":"10008:4:32","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"9995:6:32","nodeType":"YulIdentifier","src":"9995:6:32"},"nativeSrc":"9995:18:32","nodeType":"YulFunctionCall","src":"9995:18:32"},"nativeSrc":"9995:18:32","nodeType":"YulExpressionStatement","src":"9995:18:32"}]},"condition":{"arguments":[{"arguments":[{"name":"sqrtPriceAX96","nativeSrc":"9840:13:32","nodeType":"YulIdentifier","src":"9840:13:32"},{"kind":"number","nativeSrc":"9855:42:32","nodeType":"YulLiteral","src":"9855:42:32","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"9836:3:32","nodeType":"YulIdentifier","src":"9836:3:32"},"nativeSrc":"9836:62:32","nodeType":"YulFunctionCall","src":"9836:62:32"}],"functionName":{"name":"iszero","nativeSrc":"9829:6:32","nodeType":"YulIdentifier","src":"9829:6:32"},"nativeSrc":"9829:70:32","nodeType":"YulFunctionCall","src":"9829:70:32"},"nativeSrc":"9826:205:32","nodeType":"YulIf","src":"9826:205:32"}]},"evmVersion":"cancun","externalReferences":[{"declaration":7908,"isOffset":false,"isSlot":false,"src":"9840:13:32","valueSize":1}],"flags":["memory-safe"],"id":7931,"nodeType":"InlineAssembly","src":"9783:262:32"},{"assignments":[7933],"declarations":[{"constant":false,"id":7933,"mutability":"mutable","name":"numerator1","nameLocation":"10067:10:32","nodeType":"VariableDeclaration","scope":7969,"src":"10059:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7932,"name":"uint256","nodeType":"ElementaryTypeName","src":"10059:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7941,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7936,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"10088:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":7935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10080:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7934,"name":"uint256","nodeType":"ElementaryTypeName","src":"10080:7:32","typeDescriptions":{}}},"id":7937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10080:18:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":7938,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"10102:12:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$9031_$","typeString":"type(library FixedPoint96)"}},"id":7939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10115:10:32","memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":9027,"src":"10102:23:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10080:45:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10059:66:32"},{"assignments":[7943],"declarations":[{"constant":false,"id":7943,"mutability":"mutable","name":"numerator2","nameLocation":"10147:10:32","nodeType":"VariableDeclaration","scope":7969,"src":"10139:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7942,"name":"uint256","nodeType":"ElementaryTypeName","src":"10139:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7947,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7944,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"10160:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7945,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"10176:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"10160:29:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"10139:50:32"},{"expression":{"condition":{"id":7948,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7914,"src":"10211:7:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7961,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7933,"src":"10377:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7962,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"10389:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7963,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"10401:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":7959,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"10361:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":7960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10370:6:32","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8874,"src":"10361:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10361:54:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7965,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"10418:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"10361:70:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10211:220:32","trueExpression":{"arguments":[{"arguments":[{"id":7953,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7933,"src":"10288:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7954,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"10300:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7955,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"10312:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":7951,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"10262:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":7952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10271:16:32","memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8912,"src":"10262:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10262:64:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7957,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"10328:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":7949,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"10237:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$8628_$","typeString":"type(library UnsafeMath)"}},"id":7950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10248:13:32","memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"10237:24:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10237:105:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7918,"id":7968,"nodeType":"Return","src":"10204:227:32"}]}]},"documentation":{"id":7906,"nodeType":"StructuredDocumentation","src":"8853:540:32","text":"@notice Gets the amount0 delta between two prices\n @dev Calculates liquidity / sqrt(lower) - liquidity / sqrt(upper),\n i.e. liquidity * (sqrt(upper) - sqrt(lower)) / (sqrt(upper) * sqrt(lower))\n @param sqrtPriceAX96 A sqrt price\n @param sqrtPriceBX96 Another sqrt price\n @param liquidity The amount of usable liquidity\n @param roundUp Whether to round the amount up or down\n @return uint256 Amount of currency0 required to cover a position of size liquidity between the two passed prices"},"id":7971,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0Delta","nameLocation":"9407:15:32","nodeType":"FunctionDefinition","parameters":{"id":7915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7908,"mutability":"mutable","name":"sqrtPriceAX96","nameLocation":"9431:13:32","nodeType":"VariableDeclaration","scope":7971,"src":"9423:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7907,"name":"uint160","nodeType":"ElementaryTypeName","src":"9423:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7910,"mutability":"mutable","name":"sqrtPriceBX96","nameLocation":"9454:13:32","nodeType":"VariableDeclaration","scope":7971,"src":"9446:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7909,"name":"uint160","nodeType":"ElementaryTypeName","src":"9446:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7912,"mutability":"mutable","name":"liquidity","nameLocation":"9477:9:32","nodeType":"VariableDeclaration","scope":7971,"src":"9469:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7911,"name":"uint128","nodeType":"ElementaryTypeName","src":"9469:7:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":7914,"mutability":"mutable","name":"roundUp","nameLocation":"9493:7:32","nodeType":"VariableDeclaration","scope":7971,"src":"9488:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7913,"name":"bool","nodeType":"ElementaryTypeName","src":"9488:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9422:79:32"},"returnParameters":{"id":7918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7917,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7971,"src":"9549:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7916,"name":"uint256","nodeType":"ElementaryTypeName","src":"9549:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9548:9:32"},"scope":8114,"src":"9398:1050:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7982,"nodeType":"Block","src":"10585:546:32","statements":[{"AST":{"nativeSrc":"10620:505:32","nodeType":"YulBlock","src":"10620:505:32","statements":[{"nativeSrc":"10634:135:32","nodeType":"YulVariableDeclaration","src":"10634:135:32","value":{"arguments":[{"arguments":[{"name":"a","nativeSrc":"10670:1:32","nodeType":"YulIdentifier","src":"10670:1:32"},{"kind":"number","nativeSrc":"10673:42:32","nodeType":"YulLiteral","src":"10673:42:32","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"10666:3:32","nodeType":"YulIdentifier","src":"10666:3:32"},"nativeSrc":"10666:50:32","nodeType":"YulFunctionCall","src":"10666:50:32"},{"arguments":[{"name":"b","nativeSrc":"10722:1:32","nodeType":"YulIdentifier","src":"10722:1:32"},{"kind":"number","nativeSrc":"10725:42:32","nodeType":"YulLiteral","src":"10725:42:32","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"10718:3:32","nodeType":"YulIdentifier","src":"10718:3:32"},"nativeSrc":"10718:50:32","nodeType":"YulFunctionCall","src":"10718:50:32"}],"functionName":{"name":"sub","nativeSrc":"10662:3:32","nodeType":"YulIdentifier","src":"10662:3:32"},"nativeSrc":"10662:107:32","nodeType":"YulFunctionCall","src":"10662:107:32"},"variables":[{"name":"diff","nativeSrc":"10638:4:32","nodeType":"YulTypedName","src":"10638:4:32","type":""}]},{"nativeSrc":"10833:26:32","nodeType":"YulVariableDeclaration","src":"10833:26:32","value":{"arguments":[{"kind":"number","nativeSrc":"10849:3:32","nodeType":"YulLiteral","src":"10849:3:32","type":"","value":"255"},{"name":"diff","nativeSrc":"10854:4:32","nodeType":"YulIdentifier","src":"10854:4:32"}],"functionName":{"name":"sar","nativeSrc":"10845:3:32","nodeType":"YulIdentifier","src":"10845:3:32"},"nativeSrc":"10845:14:32","nodeType":"YulFunctionCall","src":"10845:14:32"},"variables":[{"name":"mask","nativeSrc":"10837:4:32","nodeType":"YulTypedName","src":"10837:4:32","type":""}]},{"nativeSrc":"11082:33:32","nodeType":"YulAssignment","src":"11082:33:32","value":{"arguments":[{"name":"mask","nativeSrc":"11093:4:32","nodeType":"YulIdentifier","src":"11093:4:32"},{"arguments":[{"name":"mask","nativeSrc":"11103:4:32","nodeType":"YulIdentifier","src":"11103:4:32"},{"name":"diff","nativeSrc":"11109:4:32","nodeType":"YulIdentifier","src":"11109:4:32"}],"functionName":{"name":"add","nativeSrc":"11099:3:32","nodeType":"YulIdentifier","src":"11099:3:32"},"nativeSrc":"11099:15:32","nodeType":"YulFunctionCall","src":"11099:15:32"}],"functionName":{"name":"xor","nativeSrc":"11089:3:32","nodeType":"YulIdentifier","src":"11089:3:32"},"nativeSrc":"11089:26:32","nodeType":"YulFunctionCall","src":"11089:26:32"},"variableNames":[{"name":"res","nativeSrc":"11082:3:32","nodeType":"YulIdentifier","src":"11082:3:32"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7974,"isOffset":false,"isSlot":false,"src":"10670:1:32","valueSize":1},{"declaration":7976,"isOffset":false,"isSlot":false,"src":"10722:1:32","valueSize":1},{"declaration":7979,"isOffset":false,"isSlot":false,"src":"11082:3:32","valueSize":1}],"flags":["memory-safe"],"id":7981,"nodeType":"InlineAssembly","src":"10595:530:32"}]},"documentation":{"id":7972,"nodeType":"StructuredDocumentation","src":"10454:51:32","text":"@notice Equivalent to: `a >= b ? a - b : b - a`"},"id":7983,"implemented":true,"kind":"function","modifiers":[],"name":"absDiff","nameLocation":"10519:7:32","nodeType":"FunctionDefinition","parameters":{"id":7977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7974,"mutability":"mutable","name":"a","nameLocation":"10535:1:32","nodeType":"VariableDeclaration","scope":7983,"src":"10527:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7973,"name":"uint160","nodeType":"ElementaryTypeName","src":"10527:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7976,"mutability":"mutable","name":"b","nameLocation":"10546:1:32","nodeType":"VariableDeclaration","scope":7983,"src":"10538:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7975,"name":"uint160","nodeType":"ElementaryTypeName","src":"10538:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"10526:22:32"},"returnParameters":{"id":7980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7979,"mutability":"mutable","name":"res","nameLocation":"10580:3:32","nodeType":"VariableDeclaration","scope":7983,"src":"10572:11:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7978,"name":"uint256","nodeType":"ElementaryTypeName","src":"10572:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10571:13:32"},"scope":8114,"src":"10510:621:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8026,"nodeType":"Block","src":"11761:766:32","statements":[{"assignments":[7998],"declarations":[{"constant":false,"id":7998,"mutability":"mutable","name":"numerator","nameLocation":"11779:9:32","nodeType":"VariableDeclaration","scope":8026,"src":"11771:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7997,"name":"uint256","nodeType":"ElementaryTypeName","src":"11771:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8003,"initialValue":{"arguments":[{"id":8000,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"11799:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8001,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"11814:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7999,"name":"absDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7983,"src":"11791:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$returns$_t_uint256_$","typeString":"function (uint160,uint160) pure returns (uint256)"}},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11791:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11771:57:32"},{"assignments":[8005],"declarations":[{"constant":false,"id":8005,"mutability":"mutable","name":"denominator","nameLocation":"11846:11:32","nodeType":"VariableDeclaration","scope":8026,"src":"11838:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8004,"name":"uint256","nodeType":"ElementaryTypeName","src":"11838:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8008,"initialValue":{"expression":{"id":8006,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"11860:12:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$9031_$","typeString":"type(library FixedPoint96)"}},"id":8007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11873:3:32","memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":9030,"src":"11860:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11838:38:32"},{"assignments":[8010],"declarations":[{"constant":false,"id":8010,"mutability":"mutable","name":"_liquidity","nameLocation":"11894:10:32","nodeType":"VariableDeclaration","scope":8026,"src":"11886:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8009,"name":"uint256","nodeType":"ElementaryTypeName","src":"11886:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8015,"initialValue":{"arguments":[{"id":8013,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"11915:9:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":8012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11907:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8011,"name":"uint256","nodeType":"ElementaryTypeName","src":"11907:7:32","typeDescriptions":{}}},"id":8014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11907:18:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11886:39:32"},{"documentation":" Equivalent to:\n   amount1 = roundUp\n       ? FullMath.mulDivRoundingUp(liquidity, sqrtPriceBX96 - sqrtPriceAX96, FixedPoint96.Q96)\n       : FullMath.mulDiv(liquidity, sqrtPriceBX96 - sqrtPriceAX96, FixedPoint96.Q96);\n Cannot overflow because `type(uint128).max * type(uint160).max >> 96 < (1 << 192)`.","expression":{"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8016,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"12313:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8019,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"12339:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8020,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"12351:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8021,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8005,"src":"12362:11:32","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":8017,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"12323:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":8018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12332:6:32","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8874,"src":"12323:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12323:51:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12313:61:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8024,"nodeType":"ExpressionStatement","src":"12313:61:32"},{"AST":{"nativeSrc":"12409:112:32","nodeType":"YulBlock","src":"12409:112:32","statements":[{"nativeSrc":"12423:88:32","nodeType":"YulAssignment","src":"12423:88:32","value":{"arguments":[{"name":"amount1","nativeSrc":"12438:7:32","nodeType":"YulIdentifier","src":"12438:7:32"},{"arguments":[{"arguments":[{"arguments":[{"name":"_liquidity","nativeSrc":"12461:10:32","nodeType":"YulIdentifier","src":"12461:10:32"},{"name":"numerator","nativeSrc":"12473:9:32","nodeType":"YulIdentifier","src":"12473:9:32"},{"name":"denominator","nativeSrc":"12484:11:32","nodeType":"YulIdentifier","src":"12484:11:32"}],"functionName":{"name":"mulmod","nativeSrc":"12454:6:32","nodeType":"YulIdentifier","src":"12454:6:32"},"nativeSrc":"12454:42:32","nodeType":"YulFunctionCall","src":"12454:42:32"},{"kind":"number","nativeSrc":"12498:1:32","nodeType":"YulLiteral","src":"12498:1:32","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"12451:2:32","nodeType":"YulIdentifier","src":"12451:2:32"},"nativeSrc":"12451:49:32","nodeType":"YulFunctionCall","src":"12451:49:32"},{"name":"roundUp","nativeSrc":"12502:7:32","nodeType":"YulIdentifier","src":"12502:7:32"}],"functionName":{"name":"and","nativeSrc":"12447:3:32","nodeType":"YulIdentifier","src":"12447:3:32"},"nativeSrc":"12447:63:32","nodeType":"YulFunctionCall","src":"12447:63:32"}],"functionName":{"name":"add","nativeSrc":"12434:3:32","nodeType":"YulIdentifier","src":"12434:3:32"},"nativeSrc":"12434:77:32","nodeType":"YulFunctionCall","src":"12434:77:32"},"variableNames":[{"name":"amount1","nativeSrc":"12423:7:32","nodeType":"YulIdentifier","src":"12423:7:32"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8010,"isOffset":false,"isSlot":false,"src":"12461:10:32","valueSize":1},{"declaration":7995,"isOffset":false,"isSlot":false,"src":"12423:7:32","valueSize":1},{"declaration":7995,"isOffset":false,"isSlot":false,"src":"12438:7:32","valueSize":1},{"declaration":8005,"isOffset":false,"isSlot":false,"src":"12484:11:32","valueSize":1},{"declaration":7998,"isOffset":false,"isSlot":false,"src":"12473:9:32","valueSize":1},{"declaration":7992,"isOffset":false,"isSlot":false,"src":"12502:7:32","valueSize":1}],"flags":["memory-safe"],"id":8025,"nodeType":"InlineAssembly","src":"12384:137:32"}]},"documentation":{"id":7984,"nodeType":"StructuredDocumentation","src":"11137:447:32","text":"@notice Gets the amount1 delta between two prices\n @dev Calculates liquidity * (sqrt(upper) - sqrt(lower))\n @param sqrtPriceAX96 A sqrt price\n @param sqrtPriceBX96 Another sqrt price\n @param liquidity The amount of usable liquidity\n @param roundUp Whether to round the amount up, or down\n @return amount1 Amount of currency1 required to cover a position of size liquidity between the two passed prices"},"id":8027,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1Delta","nameLocation":"11598:15:32","nodeType":"FunctionDefinition","parameters":{"id":7993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7986,"mutability":"mutable","name":"sqrtPriceAX96","nameLocation":"11622:13:32","nodeType":"VariableDeclaration","scope":8027,"src":"11614:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7985,"name":"uint160","nodeType":"ElementaryTypeName","src":"11614:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7988,"mutability":"mutable","name":"sqrtPriceBX96","nameLocation":"11645:13:32","nodeType":"VariableDeclaration","scope":8027,"src":"11637:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7987,"name":"uint160","nodeType":"ElementaryTypeName","src":"11637:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7990,"mutability":"mutable","name":"liquidity","nameLocation":"11668:9:32","nodeType":"VariableDeclaration","scope":8027,"src":"11660:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7989,"name":"uint128","nodeType":"ElementaryTypeName","src":"11660:7:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":7992,"mutability":"mutable","name":"roundUp","nameLocation":"11684:7:32","nodeType":"VariableDeclaration","scope":8027,"src":"11679:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7991,"name":"bool","nodeType":"ElementaryTypeName","src":"11679:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11613:79:32"},"returnParameters":{"id":7996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7995,"mutability":"mutable","name":"amount1","nameLocation":"11748:7:32","nodeType":"VariableDeclaration","scope":8027,"src":"11740:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7994,"name":"uint256","nodeType":"ElementaryTypeName","src":"11740:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11739:17:32"},"scope":8114,"src":"11589:938:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8069,"nodeType":"Block","src":"13024:276:32","statements":[{"id":8068,"nodeType":"UncheckedBlock","src":"13034:260:32","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":8041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8039,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8034,"src":"13065:9:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13077:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13065:13:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":8065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13200:83:32","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8055,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"13217:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8056,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8032,"src":"13232:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":8059,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8034,"src":"13255:9:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":8058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13247:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8057,"name":"uint128","nodeType":"ElementaryTypeName","src":"13247:7:32","typeDescriptions":{}}},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13247:18:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":8061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13267:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8054,"name":"getAmount0Delta","nodeType":"Identifier","overloadedDeclarations":[7971,8070],"referencedDeclaration":7971,"src":"13201:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13201:71:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13273:8:32","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"13201:80:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":8064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13201:82:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13065:218:32","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8043,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"13113:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8044,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8032,"src":"13128:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":8048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13151:10:32","subExpression":{"id":8047,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8034,"src":"13152:9:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":8046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13143:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8045,"name":"uint128","nodeType":"ElementaryTypeName","src":"13143:7:32","typeDescriptions":{}}},"id":8049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13143:19:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":8050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13164:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8042,"name":"getAmount0Delta","nodeType":"Identifier","overloadedDeclarations":[7971,8070],"referencedDeclaration":7971,"src":"13097:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13097:73:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13171:8:32","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"13097:82:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":8053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13097:84:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8038,"id":8067,"nodeType":"Return","src":"13058:225:32"}]}]},"documentation":{"id":8028,"nodeType":"StructuredDocumentation","src":"12533:338:32","text":"@notice Helper that gets signed currency0 delta\n @param sqrtPriceAX96 A sqrt price\n @param sqrtPriceBX96 Another sqrt price\n @param liquidity The change in liquidity for which to compute the amount0 delta\n @return int256 Amount of currency0 corresponding to the passed liquidityDelta between the two prices"},"id":8070,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0Delta","nameLocation":"12885:15:32","nodeType":"FunctionDefinition","parameters":{"id":8035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8030,"mutability":"mutable","name":"sqrtPriceAX96","nameLocation":"12909:13:32","nodeType":"VariableDeclaration","scope":8070,"src":"12901:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8029,"name":"uint160","nodeType":"ElementaryTypeName","src":"12901:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8032,"mutability":"mutable","name":"sqrtPriceBX96","nameLocation":"12932:13:32","nodeType":"VariableDeclaration","scope":8070,"src":"12924:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8031,"name":"uint160","nodeType":"ElementaryTypeName","src":"12924:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8034,"mutability":"mutable","name":"liquidity","nameLocation":"12954:9:32","nodeType":"VariableDeclaration","scope":8070,"src":"12947:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":8033,"name":"int128","nodeType":"ElementaryTypeName","src":"12947:6:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"12900:64:32"},"returnParameters":{"id":8038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8070,"src":"13012:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8036,"name":"int256","nodeType":"ElementaryTypeName","src":"13012:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13011:8:32"},"scope":8114,"src":"12876:424:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8112,"nodeType":"Block","src":"13797:276:32","statements":[{"id":8111,"nodeType":"UncheckedBlock","src":"13807:260:32","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":8084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8082,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8077,"src":"13838:9:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13850:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13838:13:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13973:83:32","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8098,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8073,"src":"13990:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8099,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"14005:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":8102,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8077,"src":"14028:9:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":8101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14020:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8100,"name":"uint128","nodeType":"ElementaryTypeName","src":"14020:7:32","typeDescriptions":{}}},"id":8103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14020:18:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":8104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14040:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8097,"name":"getAmount1Delta","nodeType":"Identifier","overloadedDeclarations":[8027,8113],"referencedDeclaration":8027,"src":"13974:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13974:71:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14046:8:32","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"13974:80:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":8107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13974:82:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13838:218:32","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8086,"name":"sqrtPriceAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8073,"src":"13886:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8087,"name":"sqrtPriceBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"13901:13:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13924:10:32","subExpression":{"id":8090,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8077,"src":"13925:9:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":8089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13916:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8088,"name":"uint128","nodeType":"ElementaryTypeName","src":"13916:7:32","typeDescriptions":{}}},"id":8092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13916:19:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":8093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13937:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8085,"name":"getAmount1Delta","nodeType":"Identifier","overloadedDeclarations":[8027,8113],"referencedDeclaration":8027,"src":"13870:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13870:73:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13944:8:32","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"13870:82:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":8096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13870:84:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8081,"id":8110,"nodeType":"Return","src":"13831:225:32"}]}]},"documentation":{"id":8071,"nodeType":"StructuredDocumentation","src":"13306:338:32","text":"@notice Helper that gets signed currency1 delta\n @param sqrtPriceAX96 A sqrt price\n @param sqrtPriceBX96 Another sqrt price\n @param liquidity The change in liquidity for which to compute the amount1 delta\n @return int256 Amount of currency1 corresponding to the passed liquidityDelta between the two prices"},"id":8113,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1Delta","nameLocation":"13658:15:32","nodeType":"FunctionDefinition","parameters":{"id":8078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8073,"mutability":"mutable","name":"sqrtPriceAX96","nameLocation":"13682:13:32","nodeType":"VariableDeclaration","scope":8113,"src":"13674:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8072,"name":"uint160","nodeType":"ElementaryTypeName","src":"13674:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8075,"mutability":"mutable","name":"sqrtPriceBX96","nameLocation":"13705:13:32","nodeType":"VariableDeclaration","scope":8113,"src":"13697:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8074,"name":"uint160","nodeType":"ElementaryTypeName","src":"13697:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8077,"mutability":"mutable","name":"liquidity","nameLocation":"13727:9:32","nodeType":"VariableDeclaration","scope":8113,"src":"13720:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":8076,"name":"int128","nodeType":"ElementaryTypeName","src":"13720:6:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"13673:64:32"},"returnParameters":{"id":8081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8080,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8113,"src":"13785:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8079,"name":"int256","nodeType":"ElementaryTypeName","src":"13785:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13784:8:32"},"scope":8114,"src":"13649:424:32","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8115,"src":"402:13673:32","usedErrors":[7639,7641,7643,7645],"usedEvents":[]}],"src":"32:14044:32"},"id":32},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SwapMath.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SwapMath.sol","exportedSymbols":{"FullMath":[8913],"SqrtPriceMath":[8114],"SwapMath":[8366]},"id":8367,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8116,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:33"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/FullMath.sol","file":"./FullMath.sol","id":8118,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8367,"sourceUnit":8914,"src":"57:40:33","symbolAliases":[{"foreign":{"id":8117,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"65:8:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SqrtPriceMath.sol","file":"./SqrtPriceMath.sol","id":8120,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8367,"sourceUnit":8115,"src":"98:50:33","symbolAliases":[{"foreign":{"id":8119,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"106:13:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SwapMath","contractDependencies":[],"contractKind":"library","documentation":{"id":8121,"nodeType":"StructuredDocumentation","src":"150:173:33","text":"@title Computes the result of a swap within ticks\n @notice Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick."},"fullyImplemented":true,"id":8366,"linearizedBaseContracts":[8366],"name":"SwapMath","nameLocation":"331:8:33","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":8122,"nodeType":"StructuredDocumentation","src":"346:171:33","text":"@notice the swap fee is represented in hundredths of a bip, so the max is 100%\n @dev the swap fee is the total fee on a swap, including both LP and Protocol fee"},"id":8125,"mutability":"constant","name":"MAX_SWAP_FEE","nameLocation":"548:12:33","nodeType":"VariableDeclaration","scope":8366,"src":"522:44:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8123,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"316536","id":8124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"563:3:33","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"},"visibility":"internal"},{"body":{"id":8138,"nodeType":"Block","src":"1318:935:33","statements":[{"AST":{"nativeSrc":"1353:894:33","nodeType":"YulBlock","src":"1353:894:33","statements":[{"nativeSrc":"1802:85:33","nodeType":"YulAssignment","src":"1802:85:33","value":{"arguments":[{"name":"sqrtPriceNextX96","nativeSrc":"1826:16:33","nodeType":"YulIdentifier","src":"1826:16:33"},{"kind":"number","nativeSrc":"1844:42:33","nodeType":"YulLiteral","src":"1844:42:33","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1822:3:33","nodeType":"YulIdentifier","src":"1822:3:33"},"nativeSrc":"1822:65:33","nodeType":"YulFunctionCall","src":"1822:65:33"},"variableNames":[{"name":"sqrtPriceNextX96","nativeSrc":"1802:16:33","nodeType":"YulIdentifier","src":"1802:16:33"}]},{"nativeSrc":"1900:87:33","nodeType":"YulAssignment","src":"1900:87:33","value":{"arguments":[{"name":"sqrtPriceLimitX96","nativeSrc":"1925:17:33","nodeType":"YulIdentifier","src":"1925:17:33"},{"kind":"number","nativeSrc":"1944:42:33","nodeType":"YulLiteral","src":"1944:42:33","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1921:3:33","nodeType":"YulIdentifier","src":"1921:3:33"},"nativeSrc":"1921:66:33","nodeType":"YulFunctionCall","src":"1921:66:33"},"variableNames":[{"name":"sqrtPriceLimitX96","nativeSrc":"1900:17:33","nodeType":"YulIdentifier","src":"1900:17:33"}]},{"nativeSrc":"2000:85:33","nodeType":"YulVariableDeclaration","src":"2000:85:33","value":{"arguments":[{"arguments":[{"name":"sqrtPriceNextX96","nativeSrc":"2026:16:33","nodeType":"YulIdentifier","src":"2026:16:33"},{"name":"sqrtPriceLimitX96","nativeSrc":"2044:17:33","nodeType":"YulIdentifier","src":"2044:17:33"}],"functionName":{"name":"lt","nativeSrc":"2023:2:33","nodeType":"YulIdentifier","src":"2023:2:33"},"nativeSrc":"2023:39:33","nodeType":"YulFunctionCall","src":"2023:39:33"},{"arguments":[{"name":"zeroForOne","nativeSrc":"2068:10:33","nodeType":"YulIdentifier","src":"2068:10:33"},{"kind":"number","nativeSrc":"2080:3:33","nodeType":"YulLiteral","src":"2080:3:33","type":"","value":"0x1"}],"functionName":{"name":"and","nativeSrc":"2064:3:33","nodeType":"YulIdentifier","src":"2064:3:33"},"nativeSrc":"2064:20:33","nodeType":"YulFunctionCall","src":"2064:20:33"}],"functionName":{"name":"xor","nativeSrc":"2019:3:33","nodeType":"YulIdentifier","src":"2019:3:33"},"nativeSrc":"2019:66:33","nodeType":"YulFunctionCall","src":"2019:66:33"},"variables":[{"name":"nextOrLimit","nativeSrc":"2004:11:33","nodeType":"YulTypedName","src":"2004:11:33","type":""}]},{"nativeSrc":"2098:55:33","nodeType":"YulVariableDeclaration","src":"2098:55:33","value":{"arguments":[{"name":"sqrtPriceNextX96","nativeSrc":"2117:16:33","nodeType":"YulIdentifier","src":"2117:16:33"},{"name":"sqrtPriceLimitX96","nativeSrc":"2135:17:33","nodeType":"YulIdentifier","src":"2135:17:33"}],"functionName":{"name":"xor","nativeSrc":"2113:3:33","nodeType":"YulIdentifier","src":"2113:3:33"},"nativeSrc":"2113:40:33","nodeType":"YulFunctionCall","src":"2113:40:33"},"variables":[{"name":"symDiff","nativeSrc":"2102:7:33","nodeType":"YulTypedName","src":"2102:7:33","type":""}]},{"nativeSrc":"2166:71:33","nodeType":"YulAssignment","src":"2166:71:33","value":{"arguments":[{"name":"sqrtPriceLimitX96","nativeSrc":"2192:17:33","nodeType":"YulIdentifier","src":"2192:17:33"},{"arguments":[{"name":"symDiff","nativeSrc":"2215:7:33","nodeType":"YulIdentifier","src":"2215:7:33"},{"name":"nextOrLimit","nativeSrc":"2224:11:33","nodeType":"YulIdentifier","src":"2224:11:33"}],"functionName":{"name":"mul","nativeSrc":"2211:3:33","nodeType":"YulIdentifier","src":"2211:3:33"},"nativeSrc":"2211:25:33","nodeType":"YulFunctionCall","src":"2211:25:33"}],"functionName":{"name":"xor","nativeSrc":"2188:3:33","nodeType":"YulIdentifier","src":"2188:3:33"},"nativeSrc":"2188:49:33","nodeType":"YulFunctionCall","src":"2188:49:33"},"variableNames":[{"name":"sqrtPriceTargetX96","nativeSrc":"2166:18:33","nodeType":"YulIdentifier","src":"2166:18:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8132,"isOffset":false,"isSlot":false,"src":"1900:17:33","valueSize":1},{"declaration":8132,"isOffset":false,"isSlot":false,"src":"1925:17:33","valueSize":1},{"declaration":8132,"isOffset":false,"isSlot":false,"src":"2044:17:33","valueSize":1},{"declaration":8132,"isOffset":false,"isSlot":false,"src":"2135:17:33","valueSize":1},{"declaration":8132,"isOffset":false,"isSlot":false,"src":"2192:17:33","valueSize":1},{"declaration":8130,"isOffset":false,"isSlot":false,"src":"1802:16:33","valueSize":1},{"declaration":8130,"isOffset":false,"isSlot":false,"src":"1826:16:33","valueSize":1},{"declaration":8130,"isOffset":false,"isSlot":false,"src":"2026:16:33","valueSize":1},{"declaration":8130,"isOffset":false,"isSlot":false,"src":"2117:16:33","valueSize":1},{"declaration":8135,"isOffset":false,"isSlot":false,"src":"2166:18:33","valueSize":1},{"declaration":8128,"isOffset":false,"isSlot":false,"src":"2068:10:33","valueSize":1}],"flags":["memory-safe"],"id":8137,"nodeType":"InlineAssembly","src":"1328:919:33"}]},"documentation":{"id":8126,"nodeType":"StructuredDocumentation","src":"573:563:33","text":"@notice Computes the sqrt price target for the next swap step\n @param zeroForOne The direction of the swap, true for currency0 to currency1, false for currency1 to currency0\n @param sqrtPriceNextX96 The Q64.96 sqrt price for the next initialized tick\n @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value\n after the swap. If one for zero, the price cannot be greater than this value after the swap\n @return sqrtPriceTargetX96 The price target for the next swap step"},"id":8139,"implemented":true,"kind":"function","modifiers":[],"name":"getSqrtPriceTarget","nameLocation":"1150:18:33","nodeType":"FunctionDefinition","parameters":{"id":8133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8128,"mutability":"mutable","name":"zeroForOne","nameLocation":"1174:10:33","nodeType":"VariableDeclaration","scope":8139,"src":"1169:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8127,"name":"bool","nodeType":"ElementaryTypeName","src":"1169:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8130,"mutability":"mutable","name":"sqrtPriceNextX96","nameLocation":"1194:16:33","nodeType":"VariableDeclaration","scope":8139,"src":"1186:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8129,"name":"uint160","nodeType":"ElementaryTypeName","src":"1186:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8132,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"1220:17:33","nodeType":"VariableDeclaration","scope":8139,"src":"1212:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8131,"name":"uint160","nodeType":"ElementaryTypeName","src":"1212:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1168:70:33"},"returnParameters":{"id":8136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8135,"mutability":"mutable","name":"sqrtPriceTargetX96","nameLocation":"1294:18:33","nodeType":"VariableDeclaration","scope":8139,"src":"1286:26:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8134,"name":"uint160","nodeType":"ElementaryTypeName","src":"1286:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1285:28:33"},"scope":8366,"src":"1141:1112:33","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8364,"nodeType":"Block","src":"3806:3159:33","statements":[{"id":8363,"nodeType":"UncheckedBlock","src":"3816:3143:33","statements":[{"assignments":[8162],"declarations":[{"constant":false,"id":8162,"mutability":"mutable","name":"_feePips","nameLocation":"3848:8:33","nodeType":"VariableDeclaration","scope":8363,"src":"3840:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3840:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8164,"initialValue":{"id":8163,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8150,"src":"3859:7:33","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"VariableDeclarationStatement","src":"3840:26:33"},{"assignments":[8166],"declarations":[{"constant":false,"id":8166,"mutability":"mutable","name":"zeroForOne","nameLocation":"3910:10:33","nodeType":"VariableDeclaration","scope":8363,"src":"3905:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8165,"name":"bool","nodeType":"ElementaryTypeName","src":"3905:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":8170,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":8169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8167,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"3923:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8168,"name":"sqrtPriceTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"3946:18:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3923:41:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3905:59:33"},{"assignments":[8172],"declarations":[{"constant":false,"id":8172,"mutability":"mutable","name":"exactIn","nameLocation":"3983:7:33","nodeType":"VariableDeclaration","scope":8363,"src":"3978:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8171,"name":"bool","nodeType":"ElementaryTypeName","src":"3978:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":8176,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8173,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8148,"src":"3993:15:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4011:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3993:19:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3978:34:33"},{"condition":{"id":8177,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8172,"src":"4031:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8361,"nodeType":"Block","src":"5716:1233:33","statements":[{"expression":{"id":8299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8282,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"5734:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":8283,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8166,"src":"5746:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8293,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"5920:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8294,"name":"sqrtPriceTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"5941:18:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8295,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"5961:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":8296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5972:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8291,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"5890:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5904:15:33","memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":7971,"src":"5890:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5890:88:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5746:232:33","trueExpression":{"arguments":[{"id":8286,"name":"sqrtPriceTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"5809:18:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8287,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"5829:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8288,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"5850:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":8289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5861:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8284,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"5779:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5793:15:33","memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":8027,"src":"5779:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5779:88:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5734:244:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8300,"nodeType":"ExpressionStatement","src":"5734:244:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8303,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8148,"src":"6008:15:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6000:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8301,"name":"uint256","nodeType":"ElementaryTypeName","src":"6000:7:33","typeDescriptions":{}}},"id":8304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6000:24:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8305,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"6028:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6000:37:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8329,"nodeType":"Block","src":"6188:324:33","statements":[{"expression":{"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8312,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"6297:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8315,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8148,"src":"6317:15:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6309:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8313,"name":"uint256","nodeType":"ElementaryTypeName","src":"6309:7:33","typeDescriptions":{}}},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6309:24:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6297:36:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8318,"nodeType":"ExpressionStatement","src":"6297:36:33"},{"expression":{"id":8327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8319,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"6355:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8322,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"6439:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8323,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"6460:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":8324,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"6471:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8325,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8166,"src":"6482:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8320,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"6398:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6412:26:33","memberName":"getNextSqrtPriceFromOutput","nodeType":"MemberAccess","referencedDeclaration":7905,"src":"6398:40:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":8326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6398:95:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6355:138:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":8328,"nodeType":"ExpressionStatement","src":"6355:138:33"}]},"id":8330,"nodeType":"IfStatement","src":"5996:516:33","trueBody":{"id":8311,"nodeType":"Block","src":"6039:143:33","statements":[{"expression":{"id":8309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8307,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"6126:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8308,"name":"sqrtPriceTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"6145:18:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6126:37:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":8310,"nodeType":"ExpressionStatement","src":"6126:37:33"}]}},{"expression":{"id":8348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8331,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"6529:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":8332,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8166,"src":"6540:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8342,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"6711:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8343,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"6732:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8344,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"6750:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":8345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6761:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8340,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"6681:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6695:15:33","memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":8027,"src":"6681:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6681:85:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6540:226:33","trueExpression":{"arguments":[{"id":8335,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"6603:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8336,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"6621:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8337,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"6642:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":8338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6653:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8333,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"6573:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6587:15:33","memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":7971,"src":"6573:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6573:85:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6529:237:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8349,"nodeType":"ExpressionStatement","src":"6529:237:33"},{"expression":{"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8350,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"6852:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8353,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"6890:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8354,"name":"_feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"6900:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8355,"name":"MAX_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"6910:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8356,"name":"_feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"6925:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6910:23:33","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":8351,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"6864:8:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":8352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6873:16:33","memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8912,"src":"6864:25:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6864:70:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6852:82:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8360,"nodeType":"ExpressionStatement","src":"6852:82:33"}]},"id":8362,"nodeType":"IfStatement","src":"4027:2922:33","trueBody":{"id":8281,"nodeType":"Block","src":"4040:1670:33","statements":[{"assignments":[8179],"declarations":[{"constant":false,"id":8179,"mutability":"mutable","name":"amountRemainingLessFee","nameLocation":"4066:22:33","nodeType":"VariableDeclaration","scope":8281,"src":"4058:30:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8178,"name":"uint256","nodeType":"ElementaryTypeName","src":"4058:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8192,"initialValue":{"arguments":[{"arguments":[{"id":8185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4135:16:33","subExpression":{"id":8184,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8148,"src":"4136:15:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4127:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8182,"name":"uint256","nodeType":"ElementaryTypeName","src":"4127:7:33","typeDescriptions":{}}},"id":8186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4127:25:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8187,"name":"MAX_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"4154:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8188,"name":"_feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"4169:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4154:23:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8190,"name":"MAX_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"4179:12:33","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":8180,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"4111:8:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":8181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4120:6:33","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8874,"src":"4111:15:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4111:81:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4058:134:33"},{"expression":{"id":8210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8193,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"4210:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":8194,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8166,"src":"4221:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8204,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"4394:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8205,"name":"sqrtPriceTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"4415:18:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8206,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"4435:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":8207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4446:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8202,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"4364:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4378:15:33","memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":8027,"src":"4364:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4364:87:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4221:230:33","trueExpression":{"arguments":[{"id":8197,"name":"sqrtPriceTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"4284:18:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8198,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"4304:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8199,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"4325:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":8200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4336:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8195,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"4254:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4268:15:33","memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":7971,"src":"4254:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4254:87:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4210:241:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8211,"nodeType":"ExpressionStatement","src":"4210:241:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8212,"name":"amountRemainingLessFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"4473:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8213,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"4499:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4473:34:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8260,"nodeType":"Block","src":"4947:491:33","statements":[{"expression":{"id":8238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8236,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"5021:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8237,"name":"amountRemainingLessFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"5032:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5021:33:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8239,"nodeType":"ExpressionStatement","src":"5021:33:33"},{"expression":{"id":8248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8240,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"5076:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8243,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"5160:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8244,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"5181:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":8245,"name":"amountRemainingLessFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"5192:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8246,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8166,"src":"5216:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8241,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"5095:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5109:25:33","memberName":"getNextSqrtPriceFromInput","nodeType":"MemberAccess","referencedDeclaration":7874,"src":"5095:39:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":8247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5095:153:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5076:172:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":8249,"nodeType":"ExpressionStatement","src":"5076:172:33"},{"expression":{"id":8258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8250,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"5371:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5391:16:33","subExpression":{"id":8253,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8148,"src":"5392:15:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5383:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8251,"name":"uint256","nodeType":"ElementaryTypeName","src":"5383:7:33","typeDescriptions":{}}},"id":8255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5383:25:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8256,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"5411:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5383:36:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5371:48:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8259,"nodeType":"ExpressionStatement","src":"5371:48:33"}]},"id":8261,"nodeType":"IfStatement","src":"4469:969:33","trueBody":{"id":8235,"nodeType":"Block","src":"4509:432:33","statements":[{"expression":{"id":8217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8215,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"4595:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8216,"name":"sqrtPriceTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"4614:18:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4595:37:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":8218,"nodeType":"ExpressionStatement","src":"4595:37:33"},{"expression":{"id":8233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8219,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"4654:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8220,"name":"_feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"4666:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8221,"name":"MAX_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"4678:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4666:24:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8226,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"4878:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8227,"name":"_feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"4888:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8228,"name":"MAX_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"4898:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8229,"name":"_feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"4913:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4898:23:33","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":8224,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"4852:8:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8913_$","typeString":"type(library FullMath)"}},"id":8225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4861:16:33","memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":8912,"src":"4852:25:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4852:70:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4666:256:33","trueExpression":{"id":8223,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"4717:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4654:268:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8234,"nodeType":"ExpressionStatement","src":"4654:268:33"}]}},{"expression":{"id":8279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8262,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"5455:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":8263,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8166,"src":"5467:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8273,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"5639:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8274,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"5660:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8275,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"5678:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":8276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5689:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8271,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"5609:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5623:15:33","memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":7971,"src":"5609:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5609:86:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5467:228:33","trueExpression":{"arguments":[{"id":8266,"name":"sqrtPriceNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"5530:16:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8267,"name":"sqrtPriceCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"5548:19:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8268,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8146,"src":"5569:9:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":8269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5580:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8264,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8114,"src":"5500:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$8114_$","typeString":"type(library SqrtPriceMath)"}},"id":8265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5514:15:33","memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":8027,"src":"5500:29:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":8270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5500:86:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5455:240:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8280,"nodeType":"ExpressionStatement","src":"5455:240:33"}]}}]}]},"documentation":{"id":8140,"nodeType":"StructuredDocumentation","src":"2259:1250:33","text":"@notice Computes the result of swapping some amount in, or amount out, given the parameters of the swap\n @dev If the swap's amountSpecified is negative, the combined fee and input amount will never exceed the absolute value of the remaining amount.\n @param sqrtPriceCurrentX96 The current sqrt price of the pool\n @param sqrtPriceTargetX96 The price that cannot be exceeded, from which the direction of the swap is inferred\n @param liquidity The usable liquidity\n @param amountRemaining How much input or output amount is remaining to be swapped in/out\n @param feePips The fee taken from the input amount, expressed in hundredths of a bip\n @return sqrtPriceNextX96 The price after swapping the amount in/out, not to exceed the price target\n @return amountIn The amount to be swapped in, of either currency0 or currency1, based on the direction of the swap\n @return amountOut The amount to be received, of either currency0 or currency1, based on the direction of the swap\n @return feeAmount The amount of input that will be taken as a fee\n @dev feePips must be no larger than MAX_SWAP_FEE for this function. We ensure that before setting a fee using LPFeeLibrary.isValid."},"id":8365,"implemented":true,"kind":"function","modifiers":[],"name":"computeSwapStep","nameLocation":"3523:15:33","nodeType":"FunctionDefinition","parameters":{"id":8151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8142,"mutability":"mutable","name":"sqrtPriceCurrentX96","nameLocation":"3556:19:33","nodeType":"VariableDeclaration","scope":8365,"src":"3548:27:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8141,"name":"uint160","nodeType":"ElementaryTypeName","src":"3548:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8144,"mutability":"mutable","name":"sqrtPriceTargetX96","nameLocation":"3593:18:33","nodeType":"VariableDeclaration","scope":8365,"src":"3585:26:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8143,"name":"uint160","nodeType":"ElementaryTypeName","src":"3585:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8146,"mutability":"mutable","name":"liquidity","nameLocation":"3629:9:33","nodeType":"VariableDeclaration","scope":8365,"src":"3621:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8145,"name":"uint128","nodeType":"ElementaryTypeName","src":"3621:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":8148,"mutability":"mutable","name":"amountRemaining","nameLocation":"3655:15:33","nodeType":"VariableDeclaration","scope":8365,"src":"3648:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8147,"name":"int256","nodeType":"ElementaryTypeName","src":"3648:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":8150,"mutability":"mutable","name":"feePips","nameLocation":"3687:7:33","nodeType":"VariableDeclaration","scope":8365,"src":"3680:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8149,"name":"uint24","nodeType":"ElementaryTypeName","src":"3680:6:33","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3538:162:33"},"returnParameters":{"id":8160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8153,"mutability":"mutable","name":"sqrtPriceNextX96","nameLocation":"3732:16:33","nodeType":"VariableDeclaration","scope":8365,"src":"3724:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8152,"name":"uint160","nodeType":"ElementaryTypeName","src":"3724:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":8155,"mutability":"mutable","name":"amountIn","nameLocation":"3758:8:33","nodeType":"VariableDeclaration","scope":8365,"src":"3750:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8154,"name":"uint256","nodeType":"ElementaryTypeName","src":"3750:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8157,"mutability":"mutable","name":"amountOut","nameLocation":"3776:9:33","nodeType":"VariableDeclaration","scope":8365,"src":"3768:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8156,"name":"uint256","nodeType":"ElementaryTypeName","src":"3768:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8159,"mutability":"mutable","name":"feeAmount","nameLocation":"3795:9:33","nodeType":"VariableDeclaration","scope":8365,"src":"3787:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8158,"name":"uint256","nodeType":"ElementaryTypeName","src":"3787:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3723:82:33"},"scope":8366,"src":"3514:3451:33","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8367,"src":"323:6644:33","usedErrors":[],"usedEvents":[]}],"src":"32:6936:33"},"id":33},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickBitmap.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickBitmap.sol","exportedSymbols":{"BitMath":[8949],"TickBitmap":[8598]},"id":8599,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8368,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:34"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/BitMath.sol","file":"./BitMath.sol","id":8370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8599,"sourceUnit":8950,"src":"57:38:34","symbolAliases":[{"foreign":{"id":8369,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8949,"src":"65:7:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"TickBitmap","contractDependencies":[],"contractKind":"library","documentation":{"id":8371,"nodeType":"StructuredDocumentation","src":"97:243:34","text":"@title Packed tick initialized state library\n @notice Stores a packed mapping of tick index to its initialized state\n @dev The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word."},"fullyImplemented":true,"id":8598,"linearizedBaseContracts":[8598],"name":"TickBitmap","nameLocation":"348:10:34","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8372,"nodeType":"StructuredDocumentation","src":"365:163:34","text":"@notice Thrown when the tick is not enumerated by the tick spacing\n @param tick the invalid tick\n @param tickSpacing The tick spacing of the pool"},"errorSelector":"d4d8f3e6","id":8378,"name":"TickMisaligned","nameLocation":"539:14:34","nodeType":"ErrorDefinition","parameters":{"id":8377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8374,"mutability":"mutable","name":"tick","nameLocation":"560:4:34","nodeType":"VariableDeclaration","scope":8378,"src":"554:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8373,"name":"int24","nodeType":"ElementaryTypeName","src":"554:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8376,"mutability":"mutable","name":"tickSpacing","nameLocation":"572:11:34","nodeType":"VariableDeclaration","scope":8378,"src":"566:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8375,"name":"int24","nodeType":"ElementaryTypeName","src":"566:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"553:31:34"},"src":"533:52:34"},{"body":{"id":8389,"nodeType":"Block","src":"726:522:34","statements":[{"AST":{"nativeSrc":"871:371:34","nodeType":"YulBlock","src":"871:371:34","statements":[{"nativeSrc":"885:27:34","nodeType":"YulAssignment","src":"885:27:34","value":{"arguments":[{"kind":"number","nativeSrc":"904:1:34","nodeType":"YulLiteral","src":"904:1:34","type":"","value":"2"},{"name":"tick","nativeSrc":"907:4:34","nodeType":"YulIdentifier","src":"907:4:34"}],"functionName":{"name":"signextend","nativeSrc":"893:10:34","nodeType":"YulIdentifier","src":"893:10:34"},"nativeSrc":"893:19:34","nodeType":"YulFunctionCall","src":"893:19:34"},"variableNames":[{"name":"tick","nativeSrc":"885:4:34","nodeType":"YulIdentifier","src":"885:4:34"}]},{"nativeSrc":"925:41:34","nodeType":"YulAssignment","src":"925:41:34","value":{"arguments":[{"kind":"number","nativeSrc":"951:1:34","nodeType":"YulLiteral","src":"951:1:34","type":"","value":"2"},{"name":"tickSpacing","nativeSrc":"954:11:34","nodeType":"YulIdentifier","src":"954:11:34"}],"functionName":{"name":"signextend","nativeSrc":"940:10:34","nodeType":"YulIdentifier","src":"940:10:34"},"nativeSrc":"940:26:34","nodeType":"YulFunctionCall","src":"940:26:34"},"variableNames":[{"name":"tickSpacing","nativeSrc":"925:11:34","nodeType":"YulIdentifier","src":"925:11:34"}]},{"nativeSrc":"979:253:34","nodeType":"YulAssignment","src":"979:253:34","value":{"arguments":[{"arguments":[{"name":"tick","nativeSrc":"1039:4:34","nodeType":"YulIdentifier","src":"1039:4:34"},{"name":"tickSpacing","nativeSrc":"1045:11:34","nodeType":"YulIdentifier","src":"1045:11:34"}],"functionName":{"name":"sdiv","nativeSrc":"1034:4:34","nodeType":"YulIdentifier","src":"1034:4:34"},"nativeSrc":"1034:23:34","nodeType":"YulFunctionCall","src":"1034:23:34"},{"arguments":[{"arguments":[{"name":"tick","nativeSrc":"1192:4:34","nodeType":"YulIdentifier","src":"1192:4:34"},{"name":"tickSpacing","nativeSrc":"1198:11:34","nodeType":"YulIdentifier","src":"1198:11:34"}],"functionName":{"name":"smod","nativeSrc":"1187:4:34","nodeType":"YulIdentifier","src":"1187:4:34"},"nativeSrc":"1187:23:34","nodeType":"YulFunctionCall","src":"1187:23:34"},{"kind":"number","nativeSrc":"1212:1:34","nodeType":"YulLiteral","src":"1212:1:34","type":"","value":"0"}],"functionName":{"name":"slt","nativeSrc":"1183:3:34","nodeType":"YulIdentifier","src":"1183:3:34"},"nativeSrc":"1183:31:34","nodeType":"YulFunctionCall","src":"1183:31:34"}],"functionName":{"name":"sub","nativeSrc":"1009:3:34","nodeType":"YulIdentifier","src":"1009:3:34"},"nativeSrc":"1009:223:34","nodeType":"YulFunctionCall","src":"1009:223:34"},"variableNames":[{"name":"compressed","nativeSrc":"979:10:34","nodeType":"YulIdentifier","src":"979:10:34"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8386,"isOffset":false,"isSlot":false,"src":"979:10:34","valueSize":1},{"declaration":8381,"isOffset":false,"isSlot":false,"src":"1039:4:34","valueSize":1},{"declaration":8381,"isOffset":false,"isSlot":false,"src":"1192:4:34","valueSize":1},{"declaration":8381,"isOffset":false,"isSlot":false,"src":"885:4:34","valueSize":1},{"declaration":8381,"isOffset":false,"isSlot":false,"src":"907:4:34","valueSize":1},{"declaration":8383,"isOffset":false,"isSlot":false,"src":"1045:11:34","valueSize":1},{"declaration":8383,"isOffset":false,"isSlot":false,"src":"1198:11:34","valueSize":1},{"declaration":8383,"isOffset":false,"isSlot":false,"src":"925:11:34","valueSize":1},{"declaration":8383,"isOffset":false,"isSlot":false,"src":"954:11:34","valueSize":1}],"flags":["memory-safe"],"id":8388,"nodeType":"InlineAssembly","src":"846:396:34"}]},"documentation":{"id":8379,"nodeType":"StructuredDocumentation","src":"591:40:34","text":"@dev round towards negative infinity"},"id":8390,"implemented":true,"kind":"function","modifiers":[],"name":"compress","nameLocation":"645:8:34","nodeType":"FunctionDefinition","parameters":{"id":8384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8381,"mutability":"mutable","name":"tick","nameLocation":"660:4:34","nodeType":"VariableDeclaration","scope":8390,"src":"654:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8380,"name":"int24","nodeType":"ElementaryTypeName","src":"654:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8383,"mutability":"mutable","name":"tickSpacing","nameLocation":"672:11:34","nodeType":"VariableDeclaration","scope":8390,"src":"666:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8382,"name":"int24","nodeType":"ElementaryTypeName","src":"666:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"653:31:34"},"returnParameters":{"id":8387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8386,"mutability":"mutable","name":"compressed","nameLocation":"714:10:34","nodeType":"VariableDeclaration","scope":8390,"src":"708:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8385,"name":"int24","nodeType":"ElementaryTypeName","src":"708:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"707:18:34"},"scope":8598,"src":"636:612:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8401,"nodeType":"Block","src":"1666:186:34","statements":[{"AST":{"nativeSrc":"1701:145:34","nodeType":"YulBlock","src":"1701:145:34","statements":[{"nativeSrc":"1760:38:34","nodeType":"YulAssignment","src":"1760:38:34","value":{"arguments":[{"kind":"number","nativeSrc":"1775:1:34","nodeType":"YulLiteral","src":"1775:1:34","type":"","value":"8"},{"arguments":[{"kind":"number","nativeSrc":"1789:1:34","nodeType":"YulLiteral","src":"1789:1:34","type":"","value":"2"},{"name":"tick","nativeSrc":"1792:4:34","nodeType":"YulIdentifier","src":"1792:4:34"}],"functionName":{"name":"signextend","nativeSrc":"1778:10:34","nodeType":"YulIdentifier","src":"1778:10:34"},"nativeSrc":"1778:19:34","nodeType":"YulFunctionCall","src":"1778:19:34"}],"functionName":{"name":"sar","nativeSrc":"1771:3:34","nodeType":"YulIdentifier","src":"1771:3:34"},"nativeSrc":"1771:27:34","nodeType":"YulFunctionCall","src":"1771:27:34"},"variableNames":[{"name":"wordPos","nativeSrc":"1760:7:34","nodeType":"YulIdentifier","src":"1760:7:34"}]},{"nativeSrc":"1811:25:34","nodeType":"YulAssignment","src":"1811:25:34","value":{"arguments":[{"name":"tick","nativeSrc":"1825:4:34","nodeType":"YulIdentifier","src":"1825:4:34"},{"kind":"number","nativeSrc":"1831:4:34","nodeType":"YulLiteral","src":"1831:4:34","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1821:3:34","nodeType":"YulIdentifier","src":"1821:3:34"},"nativeSrc":"1821:15:34","nodeType":"YulFunctionCall","src":"1821:15:34"},"variableNames":[{"name":"bitPos","nativeSrc":"1811:6:34","nodeType":"YulIdentifier","src":"1811:6:34"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8398,"isOffset":false,"isSlot":false,"src":"1811:6:34","valueSize":1},{"declaration":8393,"isOffset":false,"isSlot":false,"src":"1792:4:34","valueSize":1},{"declaration":8393,"isOffset":false,"isSlot":false,"src":"1825:4:34","valueSize":1},{"declaration":8396,"isOffset":false,"isSlot":false,"src":"1760:7:34","valueSize":1}],"flags":["memory-safe"],"id":8400,"nodeType":"InlineAssembly","src":"1676:170:34"}]},"documentation":{"id":8391,"nodeType":"StructuredDocumentation","src":"1254:325:34","text":"@notice Computes the position in the mapping where the initialized bit for a tick lives\n @param tick The tick for which to compute the position\n @return wordPos The key in the mapping containing the word in which the bit is stored\n @return bitPos The bit position in the word where the flag is stored"},"id":8402,"implemented":true,"kind":"function","modifiers":[],"name":"position","nameLocation":"1593:8:34","nodeType":"FunctionDefinition","parameters":{"id":8394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8393,"mutability":"mutable","name":"tick","nameLocation":"1608:4:34","nodeType":"VariableDeclaration","scope":8402,"src":"1602:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8392,"name":"int24","nodeType":"ElementaryTypeName","src":"1602:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1601:12:34"},"returnParameters":{"id":8399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8396,"mutability":"mutable","name":"wordPos","nameLocation":"1643:7:34","nodeType":"VariableDeclaration","scope":8402,"src":"1637:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":8395,"name":"int16","nodeType":"ElementaryTypeName","src":"1637:5:34","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":8398,"mutability":"mutable","name":"bitPos","nameLocation":"1658:6:34","nodeType":"VariableDeclaration","scope":8402,"src":"1652:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8397,"name":"uint8","nodeType":"ElementaryTypeName","src":"1652:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1636:29:34"},"scope":8598,"src":"1584:268:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8415,"nodeType":"Block","src":"2206:1312:34","statements":[{"AST":{"nativeSrc":"2534:978:34","nodeType":"YulBlock","src":"2534:978:34","statements":[{"nativeSrc":"2548:27:34","nodeType":"YulAssignment","src":"2548:27:34","value":{"arguments":[{"kind":"number","nativeSrc":"2567:1:34","nodeType":"YulLiteral","src":"2567:1:34","type":"","value":"2"},{"name":"tick","nativeSrc":"2570:4:34","nodeType":"YulIdentifier","src":"2570:4:34"}],"functionName":{"name":"signextend","nativeSrc":"2556:10:34","nodeType":"YulIdentifier","src":"2556:10:34"},"nativeSrc":"2556:19:34","nodeType":"YulFunctionCall","src":"2556:19:34"},"variableNames":[{"name":"tick","nativeSrc":"2548:4:34","nodeType":"YulIdentifier","src":"2548:4:34"}]},{"nativeSrc":"2588:41:34","nodeType":"YulAssignment","src":"2588:41:34","value":{"arguments":[{"kind":"number","nativeSrc":"2614:1:34","nodeType":"YulLiteral","src":"2614:1:34","type":"","value":"2"},{"name":"tickSpacing","nativeSrc":"2617:11:34","nodeType":"YulIdentifier","src":"2617:11:34"}],"functionName":{"name":"signextend","nativeSrc":"2603:10:34","nodeType":"YulIdentifier","src":"2603:10:34"},"nativeSrc":"2603:26:34","nodeType":"YulFunctionCall","src":"2603:26:34"},"variableNames":[{"name":"tickSpacing","nativeSrc":"2588:11:34","nodeType":"YulIdentifier","src":"2588:11:34"}]},{"body":{"nativeSrc":"2715:280:34","nodeType":"YulBlock","src":"2715:280:34","statements":[{"nativeSrc":"2733:22:34","nodeType":"YulVariableDeclaration","src":"2733:22:34","value":{"arguments":[{"kind":"number","nativeSrc":"2750:4:34","nodeType":"YulLiteral","src":"2750:4:34","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2744:5:34","nodeType":"YulIdentifier","src":"2744:5:34"},"nativeSrc":"2744:11:34","nodeType":"YulFunctionCall","src":"2744:11:34"},"variables":[{"name":"fmp","nativeSrc":"2737:3:34","nodeType":"YulTypedName","src":"2737:3:34","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"2779:3:34","nodeType":"YulIdentifier","src":"2779:3:34"},{"kind":"number","nativeSrc":"2784:10:34","nodeType":"YulLiteral","src":"2784:10:34","type":"","value":"0xd4d8f3e6"}],"functionName":{"name":"mstore","nativeSrc":"2772:6:34","nodeType":"YulIdentifier","src":"2772:6:34"},"nativeSrc":"2772:23:34","nodeType":"YulFunctionCall","src":"2772:23:34"},"nativeSrc":"2772:23:34","nodeType":"YulExpressionStatement","src":"2772:23:34"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2867:3:34","nodeType":"YulIdentifier","src":"2867:3:34"},{"kind":"number","nativeSrc":"2872:4:34","nodeType":"YulLiteral","src":"2872:4:34","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2863:3:34","nodeType":"YulIdentifier","src":"2863:3:34"},"nativeSrc":"2863:14:34","nodeType":"YulFunctionCall","src":"2863:14:34"},{"name":"tick","nativeSrc":"2879:4:34","nodeType":"YulIdentifier","src":"2879:4:34"}],"functionName":{"name":"mstore","nativeSrc":"2856:6:34","nodeType":"YulIdentifier","src":"2856:6:34"},"nativeSrc":"2856:28:34","nodeType":"YulFunctionCall","src":"2856:28:34"},"nativeSrc":"2856:28:34","nodeType":"YulExpressionStatement","src":"2856:28:34"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2912:3:34","nodeType":"YulIdentifier","src":"2912:3:34"},{"kind":"number","nativeSrc":"2917:4:34","nodeType":"YulLiteral","src":"2917:4:34","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2908:3:34","nodeType":"YulIdentifier","src":"2908:3:34"},"nativeSrc":"2908:14:34","nodeType":"YulFunctionCall","src":"2908:14:34"},{"name":"tickSpacing","nativeSrc":"2924:11:34","nodeType":"YulIdentifier","src":"2924:11:34"}],"functionName":{"name":"mstore","nativeSrc":"2901:6:34","nodeType":"YulIdentifier","src":"2901:6:34"},"nativeSrc":"2901:35:34","nodeType":"YulFunctionCall","src":"2901:35:34"},"nativeSrc":"2901:35:34","nodeType":"YulExpressionStatement","src":"2901:35:34"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2964:3:34","nodeType":"YulIdentifier","src":"2964:3:34"},{"kind":"number","nativeSrc":"2969:4:34","nodeType":"YulLiteral","src":"2969:4:34","type":"","value":"0x1c"}],"functionName":{"name":"add","nativeSrc":"2960:3:34","nodeType":"YulIdentifier","src":"2960:3:34"},"nativeSrc":"2960:14:34","nodeType":"YulFunctionCall","src":"2960:14:34"},{"kind":"number","nativeSrc":"2976:4:34","nodeType":"YulLiteral","src":"2976:4:34","type":"","value":"0x44"}],"functionName":{"name":"revert","nativeSrc":"2953:6:34","nodeType":"YulIdentifier","src":"2953:6:34"},"nativeSrc":"2953:28:34","nodeType":"YulFunctionCall","src":"2953:28:34"},"nativeSrc":"2953:28:34","nodeType":"YulExpressionStatement","src":"2953:28:34"}]},"condition":{"arguments":[{"name":"tick","nativeSrc":"2696:4:34","nodeType":"YulIdentifier","src":"2696:4:34"},{"name":"tickSpacing","nativeSrc":"2702:11:34","nodeType":"YulIdentifier","src":"2702:11:34"}],"functionName":{"name":"smod","nativeSrc":"2691:4:34","nodeType":"YulIdentifier","src":"2691:4:34"},"nativeSrc":"2691:23:34","nodeType":"YulFunctionCall","src":"2691:23:34"},"nativeSrc":"2688:307:34","nodeType":"YulIf","src":"2688:307:34"},{"nativeSrc":"3008:31:34","nodeType":"YulAssignment","src":"3008:31:34","value":{"arguments":[{"name":"tick","nativeSrc":"3021:4:34","nodeType":"YulIdentifier","src":"3021:4:34"},{"name":"tickSpacing","nativeSrc":"3027:11:34","nodeType":"YulIdentifier","src":"3027:11:34"}],"functionName":{"name":"sdiv","nativeSrc":"3016:4:34","nodeType":"YulIdentifier","src":"3016:4:34"},"nativeSrc":"3016:23:34","nodeType":"YulFunctionCall","src":"3016:23:34"},"variableNames":[{"name":"tick","nativeSrc":"3008:4:34","nodeType":"YulIdentifier","src":"3008:4:34"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3162:1:34","nodeType":"YulLiteral","src":"3162:1:34","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3169:1:34","nodeType":"YulLiteral","src":"3169:1:34","type":"","value":"8"},{"name":"tick","nativeSrc":"3172:4:34","nodeType":"YulIdentifier","src":"3172:4:34"}],"functionName":{"name":"sar","nativeSrc":"3165:3:34","nodeType":"YulIdentifier","src":"3165:3:34"},"nativeSrc":"3165:12:34","nodeType":"YulFunctionCall","src":"3165:12:34"}],"functionName":{"name":"mstore","nativeSrc":"3155:6:34","nodeType":"YulIdentifier","src":"3155:6:34"},"nativeSrc":"3155:23:34","nodeType":"YulFunctionCall","src":"3155:23:34"},"nativeSrc":"3155:23:34","nodeType":"YulExpressionStatement","src":"3155:23:34"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3198:4:34","nodeType":"YulLiteral","src":"3198:4:34","type":"","value":"0x20"},{"name":"self.slot","nativeSrc":"3204:9:34","nodeType":"YulIdentifier","src":"3204:9:34"}],"functionName":{"name":"mstore","nativeSrc":"3191:6:34","nodeType":"YulIdentifier","src":"3191:6:34"},"nativeSrc":"3191:23:34","nodeType":"YulFunctionCall","src":"3191:23:34"},"nativeSrc":"3191:23:34","nodeType":"YulExpressionStatement","src":"3191:23:34"},{"nativeSrc":"3313:30:34","nodeType":"YulVariableDeclaration","src":"3313:30:34","value":{"arguments":[{"kind":"number","nativeSrc":"3335:1:34","nodeType":"YulLiteral","src":"3335:1:34","type":"","value":"0"},{"kind":"number","nativeSrc":"3338:4:34","nodeType":"YulLiteral","src":"3338:4:34","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"3325:9:34","nodeType":"YulIdentifier","src":"3325:9:34"},"nativeSrc":"3325:18:34","nodeType":"YulFunctionCall","src":"3325:18:34"},"variables":[{"name":"slot","nativeSrc":"3317:4:34","nodeType":"YulTypedName","src":"3317:4:34","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3454:4:34","nodeType":"YulIdentifier","src":"3454:4:34"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3470:4:34","nodeType":"YulIdentifier","src":"3470:4:34"}],"functionName":{"name":"sload","nativeSrc":"3464:5:34","nodeType":"YulIdentifier","src":"3464:5:34"},"nativeSrc":"3464:11:34","nodeType":"YulFunctionCall","src":"3464:11:34"},{"arguments":[{"arguments":[{"name":"tick","nativeSrc":"3485:4:34","nodeType":"YulIdentifier","src":"3485:4:34"},{"kind":"number","nativeSrc":"3491:4:34","nodeType":"YulLiteral","src":"3491:4:34","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3481:3:34","nodeType":"YulIdentifier","src":"3481:3:34"},"nativeSrc":"3481:15:34","nodeType":"YulFunctionCall","src":"3481:15:34"},{"kind":"number","nativeSrc":"3498:1:34","nodeType":"YulLiteral","src":"3498:1:34","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3477:3:34","nodeType":"YulIdentifier","src":"3477:3:34"},"nativeSrc":"3477:23:34","nodeType":"YulFunctionCall","src":"3477:23:34"}],"functionName":{"name":"xor","nativeSrc":"3460:3:34","nodeType":"YulIdentifier","src":"3460:3:34"},"nativeSrc":"3460:41:34","nodeType":"YulFunctionCall","src":"3460:41:34"}],"functionName":{"name":"sstore","nativeSrc":"3447:6:34","nodeType":"YulIdentifier","src":"3447:6:34"},"nativeSrc":"3447:55:34","nodeType":"YulFunctionCall","src":"3447:55:34"},"nativeSrc":"3447:55:34","nodeType":"YulExpressionStatement","src":"3447:55:34"}]},"evmVersion":"cancun","externalReferences":[{"declaration":8407,"isOffset":false,"isSlot":true,"src":"3204:9:34","suffix":"slot","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"2548:4:34","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"2570:4:34","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"2696:4:34","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"2879:4:34","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"3008:4:34","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"3021:4:34","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"3172:4:34","valueSize":1},{"declaration":8409,"isOffset":false,"isSlot":false,"src":"3485:4:34","valueSize":1},{"declaration":8411,"isOffset":false,"isSlot":false,"src":"2588:11:34","valueSize":1},{"declaration":8411,"isOffset":false,"isSlot":false,"src":"2617:11:34","valueSize":1},{"declaration":8411,"isOffset":false,"isSlot":false,"src":"2702:11:34","valueSize":1},{"declaration":8411,"isOffset":false,"isSlot":false,"src":"2924:11:34","valueSize":1},{"declaration":8411,"isOffset":false,"isSlot":false,"src":"3027:11:34","valueSize":1}],"flags":["memory-safe"],"id":8414,"nodeType":"InlineAssembly","src":"2509:1003:34"}]},"documentation":{"id":8403,"nodeType":"StructuredDocumentation","src":"1858:245:34","text":"@notice Flips the initialized state for a given tick from false to true, or vice versa\n @param self The mapping in which to flip the tick\n @param tick The tick to flip\n @param tickSpacing The spacing between usable ticks"},"id":8416,"implemented":true,"kind":"function","modifiers":[],"name":"flipTick","nameLocation":"2117:8:34","nodeType":"FunctionDefinition","parameters":{"id":8412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8407,"mutability":"mutable","name":"self","nameLocation":"2160:4:34","nodeType":"VariableDeclaration","scope":8416,"src":"2126:38:34","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":8406,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8404,"name":"int16","nodeType":"ElementaryTypeName","src":"2134:5:34","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"2126:25:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8405,"name":"uint256","nodeType":"ElementaryTypeName","src":"2143:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":8409,"mutability":"mutable","name":"tick","nameLocation":"2172:4:34","nodeType":"VariableDeclaration","scope":8416,"src":"2166:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8408,"name":"int24","nodeType":"ElementaryTypeName","src":"2166:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8411,"mutability":"mutable","name":"tickSpacing","nameLocation":"2184:11:34","nodeType":"VariableDeclaration","scope":8416,"src":"2178:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8410,"name":"int24","nodeType":"ElementaryTypeName","src":"2178:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2125:71:34"},"returnParameters":{"id":8413,"nodeType":"ParameterList","parameters":[],"src":"2206:0:34"},"scope":8598,"src":"2108:1410:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8596,"nodeType":"Block","src":"4470:1793:34","statements":[{"id":8595,"nodeType":"UncheckedBlock","src":"4480:1777:34","statements":[{"assignments":[8435],"declarations":[{"constant":false,"id":8435,"mutability":"mutable","name":"compressed","nameLocation":"4510:10:34","nodeType":"VariableDeclaration","scope":8595,"src":"4504:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8434,"name":"int24","nodeType":"ElementaryTypeName","src":"4504:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":8440,"initialValue":{"arguments":[{"id":8437,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8423,"src":"4532:4:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":8438,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"4538:11:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":8436,"name":"compress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8390,"src":"4523:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_int24_$returns$_t_int24_$","typeString":"function (int24,int24) pure returns (int24)"}},"id":8439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4523:27:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"4504:46:34"},{"condition":{"id":8441,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8427,"src":"4569:3:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8593,"nodeType":"Block","src":"5379:868:34","statements":[{"assignments":[8520,8522],"declarations":[{"constant":false,"id":8520,"mutability":"mutable","name":"wordPos","nameLocation":"5505:7:34","nodeType":"VariableDeclaration","scope":8593,"src":"5499:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":8519,"name":"int16","nodeType":"ElementaryTypeName","src":"5499:5:34","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":8522,"mutability":"mutable","name":"bitPos","nameLocation":"5520:6:34","nodeType":"VariableDeclaration","scope":8593,"src":"5514:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8521,"name":"uint8","nodeType":"ElementaryTypeName","src":"5514:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":8527,"initialValue":{"arguments":[{"id":8525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5539:12:34","subExpression":{"id":8524,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8435,"src":"5541:10:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":8523,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8402,"src":"5530:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5530:22:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"5498:54:34"},{"assignments":[8529],"declarations":[{"constant":false,"id":8529,"mutability":"mutable","name":"mask","nameLocation":"5640:4:34","nodeType":"VariableDeclaration","scope":8593,"src":"5632:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8528,"name":"uint256","nodeType":"ElementaryTypeName","src":"5632:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8538,"initialValue":{"id":8537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5647:20:34","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5650:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":8531,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8522,"src":"5655:6:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5650:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8533,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5649:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5665:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5649:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8536,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5648:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5632:35:34"},{"assignments":[8540],"declarations":[{"constant":false,"id":8540,"mutability":"mutable","name":"masked","nameLocation":"5693:6:34","nodeType":"VariableDeclaration","scope":8593,"src":"5685:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8539,"name":"uint256","nodeType":"ElementaryTypeName","src":"5685:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8546,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8541,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8421,"src":"5702:4:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":8543,"indexExpression":{"id":8542,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8520,"src":"5707:7:34","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5702:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8544,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8529,"src":"5718:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5702:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5685:37:34"},{"expression":{"id":8551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8547,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8432,"src":"5855:11:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8548,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8540,"src":"5869:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5879:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5869:11:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5855:25:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8552,"nodeType":"ExpressionStatement","src":"5855:25:34"},{"expression":{"id":8591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8553,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8430,"src":"6012:4:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":8554,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8432,"src":"6019:11:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8572,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8435,"src":"6165:10:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6196:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8578,"name":"uint8","nodeType":"ElementaryTypeName","src":"6196:5:34","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":8577,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6191:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6191:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":8581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6203:3:34","memberName":"max","nodeType":"MemberAccess","src":"6191:15:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8582,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8522,"src":"6209:6:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6191:24:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":8576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6184:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8575,"name":"uint24","nodeType":"ElementaryTypeName","src":"6184:6:34","typeDescriptions":{}}},"id":8584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6184:32:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":8574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6178:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":8573,"name":"int24","nodeType":"ElementaryTypeName","src":"6178:5:34","typeDescriptions":{}}},"id":8585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6178:39:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6165:52:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":8587,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6164:54:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8588,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"6221:11:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6164:68:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":8590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6019:213:34","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8555,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8435,"src":"6054:10:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":8565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8562,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8540,"src":"6108:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8560,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8949,"src":"6080:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$8949_$","typeString":"type(library BitMath)"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6088:19:34","memberName":"leastSignificantBit","nodeType":"MemberAccess","referencedDeclaration":8948,"src":"6080:27:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":8563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6080:35:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8564,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8522,"src":"6118:6:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6080:44:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":8559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6073:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8558,"name":"uint24","nodeType":"ElementaryTypeName","src":"6073:6:34","typeDescriptions":{}}},"id":8566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6073:52:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":8557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6067:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":8556,"name":"int24","nodeType":"ElementaryTypeName","src":"6067:5:34","typeDescriptions":{}}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6067:59:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6054:72:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":8569,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6053:74:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8570,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"6130:11:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6053:88:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6012:220:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":8592,"nodeType":"ExpressionStatement","src":"6012:220:34"}]},"id":8594,"nodeType":"IfStatement","src":"4565:1682:34","trueBody":{"id":8518,"nodeType":"Block","src":"4574:799:34","statements":[{"assignments":[8443,8445],"declarations":[{"constant":false,"id":8443,"mutability":"mutable","name":"wordPos","nameLocation":"4599:7:34","nodeType":"VariableDeclaration","scope":8518,"src":"4593:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":8442,"name":"int16","nodeType":"ElementaryTypeName","src":"4593:5:34","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":8445,"mutability":"mutable","name":"bitPos","nameLocation":"4614:6:34","nodeType":"VariableDeclaration","scope":8518,"src":"4608:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8444,"name":"uint8","nodeType":"ElementaryTypeName","src":"4608:5:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":8449,"initialValue":{"arguments":[{"id":8447,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8435,"src":"4633:10:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":8446,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8402,"src":"4624:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":8448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4624:20:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"4592:52:34"},{"assignments":[8451],"declarations":[{"constant":false,"id":8451,"mutability":"mutable","name":"mask","nameLocation":"4741:4:34","nodeType":"VariableDeclaration","scope":8518,"src":"4733:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8450,"name":"uint256","nodeType":"ElementaryTypeName","src":"4733:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8469,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4753:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8453,"name":"uint256","nodeType":"ElementaryTypeName","src":"4753:7:34","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8452,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4748:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4748:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4762:3:34","memberName":"max","nodeType":"MemberAccess","src":"4748:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"arguments":[{"id":8461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4783:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8460,"name":"uint8","nodeType":"ElementaryTypeName","src":"4783:5:34","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":8459,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4778:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4778:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":8463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4790:3:34","memberName":"max","nodeType":"MemberAccess","src":"4778:15:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":8458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4770:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8457,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:34","typeDescriptions":{}}},"id":8464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4770:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8465,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"4797:6:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4770:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8467,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4769:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4748:56:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4733:71:34"},{"assignments":[8471],"declarations":[{"constant":false,"id":8471,"mutability":"mutable","name":"masked","nameLocation":"4830:6:34","nodeType":"VariableDeclaration","scope":8518,"src":"4822:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8470,"name":"uint256","nodeType":"ElementaryTypeName","src":"4822:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8477,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8472,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8421,"src":"4839:4:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":8474,"indexExpression":{"id":8473,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8443,"src":"4844:7:34","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4839:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8475,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"4855:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4839:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4822:37:34"},{"expression":{"id":8482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8478,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8432,"src":"5000:11:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8479,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8471,"src":"5014:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5024:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5014:11:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5000:25:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8483,"nodeType":"ExpressionStatement","src":"5000:25:34"},{"expression":{"id":8516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8484,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8430,"src":"5157:4:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":8485,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8432,"src":"5164:11:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8503,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8435,"src":"5309:10:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"arguments":[{"id":8508,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"5335:6:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":8507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5328:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8506,"name":"uint24","nodeType":"ElementaryTypeName","src":"5328:6:34","typeDescriptions":{}}},"id":8509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5328:14:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":8505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5322:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":8504,"name":"int24","nodeType":"ElementaryTypeName","src":"5322:5:34","typeDescriptions":{}}},"id":8510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:21:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5309:34:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":8512,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5308:36:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8513,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"5347:11:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5308:50:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":8515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5164:194:34","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":8499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8486,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8435,"src":"5199:10:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":8496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8491,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"5225:6:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":8494,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8471,"src":"5261:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8492,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8949,"src":"5234:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$8949_$","typeString":"type(library BitMath)"}},"id":8493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5242:18:34","memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":8932,"src":"5234:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":8495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5234:34:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5225:43:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":8490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5218:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8489,"name":"uint24","nodeType":"ElementaryTypeName","src":"5218:6:34","typeDescriptions":{}}},"id":8497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5218:51:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":8488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5212:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":8487,"name":"int24","nodeType":"ElementaryTypeName","src":"5212:5:34","typeDescriptions":{}}},"id":8498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5212:58:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5199:71:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":8500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5198:73:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8501,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"5274:11:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5198:87:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5157:201:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":8517,"nodeType":"ExpressionStatement","src":"5157:201:34"}]}}]}]},"documentation":{"id":8417,"nodeType":"StructuredDocumentation","src":"3524:727:34","text":"@notice Returns the next initialized tick contained in the same word (or adjacent word) as the tick that is either\n to the left (less than or equal to) or right (greater than) of the given tick\n @param self The mapping in which to compute the next initialized tick\n @param tick The starting tick\n @param tickSpacing The spacing between usable ticks\n @param lte Whether to search for the next initialized tick to the left (less than or equal to the starting tick)\n @return next The next initialized or uninitialized tick up to 256 ticks away from the current tick\n @return initialized Whether the next tick is initialized, as the function only searches within up to 256 ticks"},"id":8597,"implemented":true,"kind":"function","modifiers":[],"name":"nextInitializedTickWithinOneWord","nameLocation":"4265:32:34","nodeType":"FunctionDefinition","parameters":{"id":8428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8421,"mutability":"mutable","name":"self","nameLocation":"4341:4:34","nodeType":"VariableDeclaration","scope":8597,"src":"4307:38:34","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":8420,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8418,"name":"int16","nodeType":"ElementaryTypeName","src":"4315:5:34","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"4307:25:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8419,"name":"uint256","nodeType":"ElementaryTypeName","src":"4324:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":8423,"mutability":"mutable","name":"tick","nameLocation":"4361:4:34","nodeType":"VariableDeclaration","scope":8597,"src":"4355:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8422,"name":"int24","nodeType":"ElementaryTypeName","src":"4355:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8425,"mutability":"mutable","name":"tickSpacing","nameLocation":"4381:11:34","nodeType":"VariableDeclaration","scope":8597,"src":"4375:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8424,"name":"int24","nodeType":"ElementaryTypeName","src":"4375:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8427,"mutability":"mutable","name":"lte","nameLocation":"4407:3:34","nodeType":"VariableDeclaration","scope":8597,"src":"4402:8:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8426,"name":"bool","nodeType":"ElementaryTypeName","src":"4402:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4297:119:34"},"returnParameters":{"id":8433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8430,"mutability":"mutable","name":"next","nameLocation":"4446:4:34","nodeType":"VariableDeclaration","scope":8597,"src":"4440:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8429,"name":"int24","nodeType":"ElementaryTypeName","src":"4440:5:34","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8432,"mutability":"mutable","name":"initialized","nameLocation":"4457:11:34","nodeType":"VariableDeclaration","scope":8597,"src":"4452:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8431,"name":"bool","nodeType":"ElementaryTypeName","src":"4452:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4439:30:34"},"scope":8598,"src":"4256:2007:34","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8599,"src":"340:5925:34","usedErrors":[8378],"usedEvents":[]}],"src":"32:6234:34"},"id":34},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickMath.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/TickMath.sol","exportedSymbols":{"BitMath":[8949],"CustomRevert":[2358],"TickMath":[6305]},"id":6306,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5753,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:35"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/BitMath.sol","file":"./BitMath.sol","id":5755,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6306,"sourceUnit":8950,"src":"57:38:35","symbolAliases":[{"foreign":{"id":5754,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8949,"src":"65:7:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"./CustomRevert.sol","id":5757,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6306,"sourceUnit":2359,"src":"96:48:35","symbolAliases":[{"foreign":{"id":5756,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"104:12:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"TickMath","contractDependencies":[],"contractKind":"library","documentation":{"id":5758,"nodeType":"StructuredDocumentation","src":"146:235:35","text":"@title Math library for computing sqrt prices from ticks and vice versa\n @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\n prices between 2**-128 and 2**128"},"fullyImplemented":true,"id":6305,"linearizedBaseContracts":[6305],"name":"TickMath","nameLocation":"389:8:35","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5761,"libraryName":{"id":5759,"name":"CustomRevert","nameLocations":["410:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2358,"src":"410:12:35"},"nodeType":"UsingForDirective","src":"404:30:35","typeName":{"id":5760,"name":"bytes4","nodeType":"ElementaryTypeName","src":"427:6:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}},{"documentation":{"id":5762,"nodeType":"StructuredDocumentation","src":"440:99:35","text":"@notice Thrown when the tick passed to #getSqrtPriceAtTick is not between MIN_TICK and MAX_TICK"},"errorSelector":"8b86327a","id":5766,"name":"InvalidTick","nameLocation":"550:11:35","nodeType":"ErrorDefinition","parameters":{"id":5765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5764,"mutability":"mutable","name":"tick","nameLocation":"568:4:35","nodeType":"VariableDeclaration","scope":5766,"src":"562:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5763,"name":"int24","nodeType":"ElementaryTypeName","src":"562:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"561:12:35"},"src":"544:30:35"},{"documentation":{"id":5767,"nodeType":"StructuredDocumentation","src":"579:124:35","text":"@notice Thrown when the price passed to #getTickAtSqrtPrice does not correspond to a price between MIN_TICK and MAX_TICK"},"errorSelector":"61487524","id":5771,"name":"InvalidSqrtPrice","nameLocation":"714:16:35","nodeType":"ErrorDefinition","parameters":{"id":5770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5769,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"739:12:35","nodeType":"VariableDeclaration","scope":5771,"src":"731:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5768,"name":"uint160","nodeType":"ElementaryTypeName","src":"731:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"730:22:35"},"src":"708:45:35"},{"constant":true,"documentation":{"id":5772,"nodeType":"StructuredDocumentation","src":"759:233:35","text":"@dev The minimum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**-128\n @dev If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used"},"id":5776,"mutability":"constant","name":"MIN_TICK","nameLocation":"1021:8:35","nodeType":"VariableDeclaration","scope":6305,"src":"997:42:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5773,"name":"int24","nodeType":"ElementaryTypeName","src":"997:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":5775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1032:7:35","subExpression":{"hexValue":"383837323732","id":5774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1033:6:35","typeDescriptions":{"typeIdentifier":"t_rational_887272_by_1","typeString":"int_const 887272"},"value":"887272"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_887272_by_1","typeString":"int_const -887272"}},"visibility":"internal"},{"constant":true,"documentation":{"id":5777,"nodeType":"StructuredDocumentation","src":"1045:232:35","text":"@dev The maximum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**128\n @dev If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used"},"id":5780,"mutability":"constant","name":"MAX_TICK","nameLocation":"1306:8:35","nodeType":"VariableDeclaration","scope":6305,"src":"1282:41:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5778,"name":"int24","nodeType":"ElementaryTypeName","src":"1282:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"hexValue":"383837323732","id":5779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1317:6:35","typeDescriptions":{"typeIdentifier":"t_rational_887272_by_1","typeString":"int_const 887272"},"value":"887272"},"visibility":"internal"},{"constant":true,"documentation":{"id":5781,"nodeType":"StructuredDocumentation","src":"1330:133:35","text":"@dev The minimum tick spacing value drawn from the range of type int16 that is greater than 0, i.e. min from the range [1, 32767]"},"id":5784,"mutability":"constant","name":"MIN_TICK_SPACING","nameLocation":"1492:16:35","nodeType":"VariableDeclaration","scope":6305,"src":"1468:44:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5782,"name":"int24","nodeType":"ElementaryTypeName","src":"1468:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"hexValue":"31","id":5783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1511:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"documentation":{"id":5785,"nodeType":"StructuredDocumentation","src":"1518:110:35","text":"@dev The maximum tick spacing value drawn from the range of type int16, i.e. max from the range [1, 32767]"},"id":5792,"mutability":"constant","name":"MAX_TICK_SPACING","nameLocation":"1657:16:35","nodeType":"VariableDeclaration","scope":6305,"src":"1633:58:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5786,"name":"int24","nodeType":"ElementaryTypeName","src":"1633:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"expression":{"arguments":[{"id":5789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1681:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":5788,"name":"int16","nodeType":"ElementaryTypeName","src":"1681:5:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"}],"id":5787,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1676:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:11:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int16","typeString":"type(int16)"}},"id":5791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1688:3:35","memberName":"max","nodeType":"MemberAccess","src":"1676:15:35","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":true,"documentation":{"id":5793,"nodeType":"StructuredDocumentation","src":"1698:116:35","text":"@dev The minimum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MIN_TICK)"},"id":5796,"mutability":"constant","name":"MIN_SQRT_PRICE","nameLocation":"1845:14:35","nodeType":"VariableDeclaration","scope":6305,"src":"1819:53:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5794,"name":"uint160","nodeType":"ElementaryTypeName","src":"1819:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"34323935313238373339","id":5795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1862:10:35","typeDescriptions":{"typeIdentifier":"t_rational_4295128739_by_1","typeString":"int_const 4295128739"},"value":"4295128739"},"visibility":"internal"},{"constant":true,"documentation":{"id":5797,"nodeType":"StructuredDocumentation","src":"1878:116:35","text":"@dev The maximum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MAX_TICK)"},"id":5800,"mutability":"constant","name":"MAX_SQRT_PRICE","nameLocation":"2025:14:35","nodeType":"VariableDeclaration","scope":6305,"src":"1999:92:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5798,"name":"uint160","nodeType":"ElementaryTypeName","src":"1999:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432","id":5799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:49:35","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822378723970342_by_1","typeString":"int_const 1461...(41 digits omitted)...0342"},"value":"1461446703485210103287273052203988822378723970342"},"visibility":"internal"},{"constant":true,"documentation":{"id":5801,"nodeType":"StructuredDocumentation","src":"2097:98:35","text":"@dev A threshold used for optimized bounds check, equals `MAX_SQRT_PRICE - MIN_SQRT_PRICE - 1`"},"id":5808,"mutability":"constant","name":"MAX_SQRT_PRICE_MINUS_MIN_SQRT_PRICE_MINUS_ONE","nameLocation":"2226:45:35","nodeType":"VariableDeclaration","scope":6305,"src":"2200:148:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5802,"name":"uint160","nodeType":"ElementaryTypeName","src":"2200:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"commonType":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822374428841602_by_1","typeString":"int_const 1461...(41 digits omitted)...1602"},"id":5807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822374428841603_by_1","typeString":"int_const 1461...(41 digits omitted)...1603"},"id":5805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432","id":5803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2282:49:35","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822378723970342_by_1","typeString":"int_const 1461...(41 digits omitted)...0342"},"value":"1461446703485210103287273052203988822378723970342"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"34323935313238373339","id":5804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2334:10:35","typeDescriptions":{"typeIdentifier":"t_rational_4295128739_by_1","typeString":"int_const 4295128739"},"value":"4295128739"},"src":"2282:62:35","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822374428841603_by_1","typeString":"int_const 1461...(41 digits omitted)...1603"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2347:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2282:66:35","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822374428841602_by_1","typeString":"int_const 1461...(41 digits omitted)...1602"}},"visibility":"internal"},{"body":{"id":5824,"nodeType":"Block","src":"2496:96:35","statements":[{"id":5823,"nodeType":"UncheckedBlock","src":"2506:80:35","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":5821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":5818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5816,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5780,"src":"2538:8:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5817,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"2549:11:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2538:22:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":5819,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2537:24:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5820,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"2564:11:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2537:38:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"functionReturnParameters":5815,"id":5822,"nodeType":"Return","src":"2530:45:35"}]}]},"documentation":{"id":5809,"nodeType":"StructuredDocumentation","src":"2355:64:35","text":"@notice Given a tickSpacing, compute the maximum usable tick"},"id":5825,"implemented":true,"kind":"function","modifiers":[],"name":"maxUsableTick","nameLocation":"2433:13:35","nodeType":"FunctionDefinition","parameters":{"id":5812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5811,"mutability":"mutable","name":"tickSpacing","nameLocation":"2453:11:35","nodeType":"VariableDeclaration","scope":5825,"src":"2447:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5810,"name":"int24","nodeType":"ElementaryTypeName","src":"2447:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2446:19:35"},"returnParameters":{"id":5815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5814,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5825,"src":"2489:5:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5813,"name":"int24","nodeType":"ElementaryTypeName","src":"2489:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2488:7:35"},"scope":6305,"src":"2424:168:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5841,"nodeType":"Block","src":"2739:96:35","statements":[{"id":5840,"nodeType":"UncheckedBlock","src":"2749:80:35","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":5838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":5835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5833,"name":"MIN_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5776,"src":"2781:8:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5834,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"2792:11:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2781:22:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":5836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2780:24:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5837,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"2807:11:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2780:38:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"functionReturnParameters":5832,"id":5839,"nodeType":"Return","src":"2773:45:35"}]}]},"documentation":{"id":5826,"nodeType":"StructuredDocumentation","src":"2598:64:35","text":"@notice Given a tickSpacing, compute the minimum usable tick"},"id":5842,"implemented":true,"kind":"function","modifiers":[],"name":"minUsableTick","nameLocation":"2676:13:35","nodeType":"FunctionDefinition","parameters":{"id":5829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5828,"mutability":"mutable","name":"tickSpacing","nameLocation":"2696:11:35","nodeType":"VariableDeclaration","scope":5842,"src":"2690:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5827,"name":"int24","nodeType":"ElementaryTypeName","src":"2690:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2689:19:35"},"returnParameters":{"id":5832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5842,"src":"2732:5:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5830,"name":"int24","nodeType":"ElementaryTypeName","src":"2732:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2731:7:35"},"scope":6305,"src":"2667:168:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6163,"nodeType":"Block","src":"3234:3933:35","statements":[{"id":6162,"nodeType":"UncheckedBlock","src":"3244:3917:35","statements":[{"assignments":[5851],"declarations":[{"constant":false,"id":5851,"mutability":"mutable","name":"absTick","nameLocation":"3276:7:35","nodeType":"VariableDeclaration","scope":6162,"src":"3268:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5850,"name":"uint256","nodeType":"ElementaryTypeName","src":"3268:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5852,"nodeType":"VariableDeclarationStatement","src":"3268:15:35"},{"AST":{"nativeSrc":"3322:434:35","nodeType":"YulBlock","src":"3322:434:35","statements":[{"nativeSrc":"3340:27:35","nodeType":"YulAssignment","src":"3340:27:35","value":{"arguments":[{"kind":"number","nativeSrc":"3359:1:35","nodeType":"YulLiteral","src":"3359:1:35","type":"","value":"2"},{"name":"tick","nativeSrc":"3362:4:35","nodeType":"YulIdentifier","src":"3362:4:35"}],"functionName":{"name":"signextend","nativeSrc":"3348:10:35","nodeType":"YulIdentifier","src":"3348:10:35"},"nativeSrc":"3348:19:35","nodeType":"YulFunctionCall","src":"3348:19:35"},"variableNames":[{"name":"tick","nativeSrc":"3340:4:35","nodeType":"YulIdentifier","src":"3340:4:35"}]},{"nativeSrc":"3442:26:35","nodeType":"YulVariableDeclaration","src":"3442:26:35","value":{"arguments":[{"kind":"number","nativeSrc":"3458:3:35","nodeType":"YulLiteral","src":"3458:3:35","type":"","value":"255"},{"name":"tick","nativeSrc":"3463:4:35","nodeType":"YulIdentifier","src":"3463:4:35"}],"functionName":{"name":"sar","nativeSrc":"3454:3:35","nodeType":"YulIdentifier","src":"3454:3:35"},"nativeSrc":"3454:14:35","nodeType":"YulFunctionCall","src":"3454:14:35"},"variables":[{"name":"mask","nativeSrc":"3446:4:35","nodeType":"YulTypedName","src":"3446:4:35","type":""}]},{"nativeSrc":"3705:37:35","nodeType":"YulAssignment","src":"3705:37:35","value":{"arguments":[{"name":"mask","nativeSrc":"3720:4:35","nodeType":"YulIdentifier","src":"3720:4:35"},{"arguments":[{"name":"mask","nativeSrc":"3730:4:35","nodeType":"YulIdentifier","src":"3730:4:35"},{"name":"tick","nativeSrc":"3736:4:35","nodeType":"YulIdentifier","src":"3736:4:35"}],"functionName":{"name":"add","nativeSrc":"3726:3:35","nodeType":"YulIdentifier","src":"3726:3:35"},"nativeSrc":"3726:15:35","nodeType":"YulFunctionCall","src":"3726:15:35"}],"functionName":{"name":"xor","nativeSrc":"3716:3:35","nodeType":"YulIdentifier","src":"3716:3:35"},"nativeSrc":"3716:26:35","nodeType":"YulFunctionCall","src":"3716:26:35"},"variableNames":[{"name":"absTick","nativeSrc":"3705:7:35","nodeType":"YulIdentifier","src":"3705:7:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5851,"isOffset":false,"isSlot":false,"src":"3705:7:35","valueSize":1},{"declaration":5845,"isOffset":false,"isSlot":false,"src":"3340:4:35","valueSize":1},{"declaration":5845,"isOffset":false,"isSlot":false,"src":"3362:4:35","valueSize":1},{"declaration":5845,"isOffset":false,"isSlot":false,"src":"3463:4:35","valueSize":1},{"declaration":5845,"isOffset":false,"isSlot":false,"src":"3736:4:35","valueSize":1}],"flags":["memory-safe"],"id":5853,"nodeType":"InlineAssembly","src":"3297:459:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5854,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"3774:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"arguments":[{"id":5859,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5780,"src":"3799:8:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":5858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3792:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5857,"name":"int256","nodeType":"ElementaryTypeName","src":"3792:6:35","typeDescriptions":{}}},"id":5860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3792:16:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3784:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5855,"name":"uint256","nodeType":"ElementaryTypeName","src":"3784:7:35","typeDescriptions":{}}},"id":5861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3784:25:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3774:35:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5871,"nodeType":"IfStatement","src":"3770:78:35","trueBody":{"expression":{"arguments":[{"id":5868,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5845,"src":"3843:4:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"expression":{"id":5863,"name":"InvalidTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"3811:11:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int24_$returns$_t_error_$","typeString":"function (int24) pure returns (error)"}},"id":5866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3823:8:35","memberName":"selector","nodeType":"MemberAccess","src":"3811:20:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3832:10:35","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2294,"src":"3811:31:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_int24_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,int24) pure"}},"id":5869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:37:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5870,"nodeType":"ExpressionStatement","src":"3811:37:35"}},{"assignments":[5873],"declarations":[{"constant":false,"id":5873,"mutability":"mutable","name":"price","nameLocation":"4364:5:35","nodeType":"VariableDeclaration","scope":6162,"src":"4356:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5872,"name":"uint256","nodeType":"ElementaryTypeName","src":"4356:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5874,"nodeType":"VariableDeclarationStatement","src":"4356:13:35"},{"AST":{"nativeSrc":"4408:135:35","nodeType":"YulBlock","src":"4408:135:35","statements":[{"nativeSrc":"4426:103:35","nodeType":"YulAssignment","src":"4426:103:35","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4443:3:35","nodeType":"YulLiteral","src":"4443:3:35","type":"","value":"128"},{"kind":"number","nativeSrc":"4448:1:35","nodeType":"YulLiteral","src":"4448:1:35","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4439:3:35","nodeType":"YulIdentifier","src":"4439:3:35"},"nativeSrc":"4439:11:35","nodeType":"YulFunctionCall","src":"4439:11:35"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4464:3:35","nodeType":"YulLiteral","src":"4464:3:35","type":"","value":"128"},{"kind":"number","nativeSrc":"4469:1:35","nodeType":"YulLiteral","src":"4469:1:35","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4460:3:35","nodeType":"YulIdentifier","src":"4460:3:35"},"nativeSrc":"4460:11:35","nodeType":"YulFunctionCall","src":"4460:11:35"},{"kind":"number","nativeSrc":"4473:34:35","nodeType":"YulLiteral","src":"4473:34:35","type":"","value":"0xfffcb933bd6fad37aa2d162d1a594001"}],"functionName":{"name":"xor","nativeSrc":"4456:3:35","nodeType":"YulIdentifier","src":"4456:3:35"},"nativeSrc":"4456:52:35","nodeType":"YulFunctionCall","src":"4456:52:35"},{"arguments":[{"name":"absTick","nativeSrc":"4514:7:35","nodeType":"YulIdentifier","src":"4514:7:35"},{"kind":"number","nativeSrc":"4523:3:35","nodeType":"YulLiteral","src":"4523:3:35","type":"","value":"0x1"}],"functionName":{"name":"and","nativeSrc":"4510:3:35","nodeType":"YulIdentifier","src":"4510:3:35"},"nativeSrc":"4510:17:35","nodeType":"YulFunctionCall","src":"4510:17:35"}],"functionName":{"name":"mul","nativeSrc":"4452:3:35","nodeType":"YulIdentifier","src":"4452:3:35"},"nativeSrc":"4452:76:35","nodeType":"YulFunctionCall","src":"4452:76:35"}],"functionName":{"name":"xor","nativeSrc":"4435:3:35","nodeType":"YulIdentifier","src":"4435:3:35"},"nativeSrc":"4435:94:35","nodeType":"YulFunctionCall","src":"4435:94:35"},"variableNames":[{"name":"price","nativeSrc":"4426:5:35","nodeType":"YulIdentifier","src":"4426:5:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5851,"isOffset":false,"isSlot":false,"src":"4514:7:35","valueSize":1},{"declaration":5873,"isOffset":false,"isSlot":false,"src":"4426:5:35","valueSize":1}],"flags":["memory-safe"],"id":5875,"nodeType":"InlineAssembly","src":"4383:160:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5876,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"4560:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832","id":5877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4570:3:35","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"4560:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4577:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4560:18:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5890,"nodeType":"IfStatement","src":"4556:83:35","trueBody":{"expression":{"id":5888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5881,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4580:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5882,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4589:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663937323732333733643431333235396134363939303538306532313361","id":5883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4597:34:35","typeDescriptions":{"typeIdentifier":"t_rational_340248342086729790484326174814286782778_by_1","typeString":"int_const 3402...(31 digits omitted)...2778"},"value":"0xfff97272373d413259a46990580e213a"},"src":"4589:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5885,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4588:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4636:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"4588:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4580:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5889,"nodeType":"ExpressionStatement","src":"4580:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5891,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"4657:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834","id":5892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4667:3:35","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"4657:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4674:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4657:18:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5905,"nodeType":"IfStatement","src":"4653:83:35","trueBody":{"expression":{"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5896,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4677:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5897,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4686:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663265353066356636353639333265663132333537636633633766646363","id":5898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4694:34:35","typeDescriptions":{"typeIdentifier":"t_rational_340214320654664324051920982716015181260_by_1","typeString":"int_const 3402...(31 digits omitted)...1260"},"value":"0xfff2e50f5f656932ef12357cf3c7fdcc"},"src":"4686:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5900,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4685:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4733:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"4685:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4677:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5904,"nodeType":"ExpressionStatement","src":"4677:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5906,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"4754:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838","id":5907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4764:3:35","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x8"},"src":"4754:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4771:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4754:18:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5920,"nodeType":"IfStatement","src":"4750:83:35","trueBody":{"expression":{"id":5918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5911,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4774:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5912,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4783:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666653563616361376531306534653631633336323465616130393431636430","id":5913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4791:34:35","typeDescriptions":{"typeIdentifier":"t_rational_340146287995602323631171512101879684304_by_1","typeString":"int_const 3401...(31 digits omitted)...4304"},"value":"0xffe5caca7e10e4e61c3624eaa0941cd0"},"src":"4783:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4782:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4830:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"4782:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4774:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5919,"nodeType":"ExpressionStatement","src":"4774:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5921,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"4851:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":5922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4861:4:35","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"4851:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4869:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4851:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5935,"nodeType":"IfStatement","src":"4847:84:35","trueBody":{"expression":{"id":5933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5926,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4872:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5927,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4881:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666636239383433643630663631353963396462353838333563393236363434","id":5928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4889:34:35","typeDescriptions":{"typeIdentifier":"t_rational_340010263488231146823593991679159461444_by_1","typeString":"int_const 3400...(31 digits omitted)...1444"},"value":"0xffcb9843d60f6159c9db58835c926644"},"src":"4881:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5930,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4880:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4928:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"4880:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4872:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5934,"nodeType":"ExpressionStatement","src":"4872:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5936,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"4949:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":5937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4959:4:35","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"4949:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4967:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4949:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5950,"nodeType":"IfStatement","src":"4945:84:35","trueBody":{"expression":{"id":5948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5941,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4970:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5942,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4979:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666393733623431666139386330383134373265363839366466623235346330","id":5943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4987:34:35","typeDescriptions":{"typeIdentifier":"t_rational_339738377640345403697157401104375502016_by_1","typeString":"int_const 3397...(31 digits omitted)...2016"},"value":"0xff973b41fa98c081472e6896dfb254c0"},"src":"4979:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4978:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5026:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"4978:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4970:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5949,"nodeType":"ExpressionStatement","src":"4970:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5951,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5047:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430","id":5952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5057:4:35","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"5047:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5065:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5047:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5965,"nodeType":"IfStatement","src":"5043:84:35","trueBody":{"expression":{"id":5963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5956,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5068:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5957,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5077:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666326561313634363663393661333834336563373862333236623532383631","id":5958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5085:34:35","typeDescriptions":{"typeIdentifier":"t_rational_339195258003219555707034227454543997025_by_1","typeString":"int_const 3391...(31 digits omitted)...7025"},"value":"0xff2ea16466c96a3843ec78b326b52861"},"src":"5077:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5076:44:35","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":"5124:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5076:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5068:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5964,"nodeType":"ExpressionStatement","src":"5068:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5966,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5145:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830","id":5967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5155:4:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"5145:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5163:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5145:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5980,"nodeType":"IfStatement","src":"5141:84:35","trueBody":{"expression":{"id":5978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5971,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5166:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5972,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5175:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786665356465653034366139396132613831316334363166313936396333303533","id":5973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5183:34:35","typeDescriptions":{"typeIdentifier":"t_rational_338111622100601834656805679988414885971_by_1","typeString":"int_const 3381...(31 digits omitted)...5971"},"value":"0xfe5dee046a99a2a811c461f1969c3053"},"src":"5175:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5174:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5222:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5174:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5166:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5979,"nodeType":"ExpressionStatement","src":"5166:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5981,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5243:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078313030","id":5982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5253:5:35","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"5243:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5262:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5243:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5995,"nodeType":"IfStatement","src":"5239:85:35","trueBody":{"expression":{"id":5993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5986,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5265:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5987,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5274:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786663626538366337393030613838616564636666633833623437396161336134","id":5988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:34:35","typeDescriptions":{"typeIdentifier":"t_rational_335954724994790223023589805789778977700_by_1","typeString":"int_const 3359...(31 digits omitted)...7700"},"value":"0xfcbe86c7900a88aedcffc83b479aa3a4"},"src":"5274:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5273:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5321:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5273:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5265:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5994,"nodeType":"ExpressionStatement","src":"5265:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5996,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5342:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078323030","id":5997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5352:5:35","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"src":"5342:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5361:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5342:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6010,"nodeType":"IfStatement","src":"5338:85:35","trueBody":{"expression":{"id":6008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6001,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5364:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6002,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5373:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786639383761373235336163343133313736663262303734636637383135653534","id":6003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5381:34:35","typeDescriptions":{"typeIdentifier":"t_rational_331682121138379247127172139078559817300_by_1","typeString":"int_const 3316...(31 digits omitted)...7300"},"value":"0xf987a7253ac413176f2b074cf7815e54"},"src":"5373:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6005,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5372:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5420:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5372:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6009,"nodeType":"ExpressionStatement","src":"5364:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6011,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5441:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078343030","id":6012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5451:5:35","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"value":"0x400"},"src":"5441:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5460:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5441:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6025,"nodeType":"IfStatement","src":"5437:85:35","trueBody":{"expression":{"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6016,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5463:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6017,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5472:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786633333932623038323262373030303539343063376133393865346237306633","id":6018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5480:34:35","typeDescriptions":{"typeIdentifier":"t_rational_323299236684853023288211250268160618739_by_1","typeString":"int_const 3232...(31 digits omitted)...8739"},"value":"0xf3392b0822b70005940c7a398e4b70f3"},"src":"5472:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5471:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5519:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5471:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5463:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6024,"nodeType":"ExpressionStatement","src":"5463:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6026,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5540:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078383030","id":6027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5550:5:35","typeDescriptions":{"typeIdentifier":"t_rational_2048_by_1","typeString":"int_const 2048"},"value":"0x800"},"src":"5540:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5559:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5540:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6040,"nodeType":"IfStatement","src":"5536:85:35","trueBody":{"expression":{"id":6038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6031,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5562:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6032,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5571:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786537313539343735613263323962373434336232396337666136653838396439","id":6033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5579:34:35","typeDescriptions":{"typeIdentifier":"t_rational_307163716377032989948697243942600083929_by_1","typeString":"int_const 3071...(31 digits omitted)...3929"},"value":"0xe7159475a2c29b7443b29c7fa6e889d9"},"src":"5571:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6035,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5570:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5618:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5570:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5562:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6039,"nodeType":"ExpressionStatement","src":"5562:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6041,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5639:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831303030","id":6042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5649:6:35","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"value":"0x1000"},"src":"5639:16:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5659:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5639:21:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6055,"nodeType":"IfStatement","src":"5635:86:35","trueBody":{"expression":{"id":6053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6046,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5662:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6047,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5671:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786430393766336264666432303232623838343561643866373932616135383235","id":6048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5679:34:35","typeDescriptions":{"typeIdentifier":"t_rational_277268403626896220162999269216087595045_by_1","typeString":"int_const 2772...(31 digits omitted)...5045"},"value":"0xd097f3bdfd2022b8845ad8f792aa5825"},"src":"5671:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5670:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5718:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5670:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5662:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6054,"nodeType":"ExpressionStatement","src":"5662:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6056,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5739:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832303030","id":6057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5749:6:35","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"value":"0x2000"},"src":"5739:16:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5759:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5739:21:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6070,"nodeType":"IfStatement","src":"5735:86:35","trueBody":{"expression":{"id":6068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6061,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5762:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6062,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5771:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786139663734363436326438373066646638613635646331663930653036316535","id":6063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5779:34:35","typeDescriptions":{"typeIdentifier":"t_rational_225923453940442621947126027127485391333_by_1","typeString":"int_const 2259...(31 digits omitted)...1333"},"value":"0xa9f746462d870fdf8a65dc1f90e061e5"},"src":"5771:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6065,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5770:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5818:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5770:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5762:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6069,"nodeType":"ExpressionStatement","src":"5762:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6071,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5839:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834303030","id":6072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5849:6:35","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"},"value":"0x4000"},"src":"5839:16:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5859:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5839:21:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6085,"nodeType":"IfStatement","src":"5835:86:35","trueBody":{"expression":{"id":6083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6076,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5862:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6077,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5871:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783730643836396131353664326131623839306262336466363262616633326637","id":6078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5879:34:35","typeDescriptions":{"typeIdentifier":"t_rational_149997214084966997727330242082538205943_by_1","typeString":"int_const 1499...(31 digits omitted)...5943"},"value":"0x70d869a156d2a1b890bb3df62baf32f7"},"src":"5871:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5870:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5918:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5870:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5862:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6084,"nodeType":"ExpressionStatement","src":"5862:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6086,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"5939:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838303030","id":6087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5949:6:35","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"value":"0x8000"},"src":"5939:16:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5959:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5939:21:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6100,"nodeType":"IfStatement","src":"5935:86:35","trueBody":{"expression":{"id":6098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6091,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5962:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6092,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"5971:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783331626531333566393764303866643938313233313530353534326663666136","id":6093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5979:34:35","typeDescriptions":{"typeIdentifier":"t_rational_66119101136024775622716233608466517926_by_1","typeString":"int_const 6611...(30 digits omitted)...7926"},"value":"0x31be135f97d08fd981231505542fcfa6"},"src":"5971:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6095,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5970:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6018:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5970:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5962:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6099,"nodeType":"ExpressionStatement","src":"5962:59:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6101,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"6039:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130303030","id":6102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6049:7:35","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"6039:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6060:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6039:22:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6115,"nodeType":"IfStatement","src":"6035:86:35","trueBody":{"expression":{"id":6113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6106,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6063:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6107,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6072:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307839616135303862356237613834653163363737646535346633653939626339","id":6108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6080:33:35","typeDescriptions":{"typeIdentifier":"t_rational_12847376061809297530290974190478138313_by_1","typeString":"int_const 1284...(30 digits omitted)...8313"},"value":"0x9aa508b5b7a84e1c677de54f3e99bc9"},"src":"6072:41:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6110,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6071:43:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6118:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"6071:50:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6063:58:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6114,"nodeType":"ExpressionStatement","src":"6063:58:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6116,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"6139:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230303030","id":6117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6149:7:35","typeDescriptions":{"typeIdentifier":"t_rational_131072_by_1","typeString":"int_const 131072"},"value":"0x20000"},"src":"6139:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6160:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6139:22:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6130,"nodeType":"IfStatement","src":"6135:85:35","trueBody":{"expression":{"id":6128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6121,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6163:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6122,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6172:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3078356436616638646564623831313936363939633332393232356565363034","id":6123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6180:32:35","typeDescriptions":{"typeIdentifier":"t_rational_485053260817066172746253684029974020_by_1","typeString":"int_const 4850...(28 digits omitted)...4020"},"value":"0x5d6af8dedb81196699c329225ee604"},"src":"6172:40:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6171:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6217:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"6171:49:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6163:57:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6129,"nodeType":"ExpressionStatement","src":"6163:57:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6131,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"6238:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430303030","id":6132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6248:7:35","typeDescriptions":{"typeIdentifier":"t_rational_262144_by_1","typeString":"int_const 262144"},"value":"0x40000"},"src":"6238:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6259:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6238:22:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6145,"nodeType":"IfStatement","src":"6234:83:35","trueBody":{"expression":{"id":6143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6136,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6262:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6137,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6271:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307832323136653538346635666131656139323630343162656466653938","id":6138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6279:30:35","typeDescriptions":{"typeIdentifier":"t_rational_691415978906521570653435304214168_by_1","typeString":"int_const 6914...(25 digits omitted)...4168"},"value":"0x2216e584f5fa1ea926041bedfe98"},"src":"6271:38:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6140,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6270:40:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6314:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"6270:47:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6262:55:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6144,"nodeType":"ExpressionStatement","src":"6262:55:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6146,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"6335:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830303030","id":6147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6345:7:35","typeDescriptions":{"typeIdentifier":"t_rational_524288_by_1","typeString":"int_const 524288"},"value":"0x80000"},"src":"6335:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6356:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6335:22:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6160,"nodeType":"IfStatement","src":"6331:78:35","trueBody":{"expression":{"id":6158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6151,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6359:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6152,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"6368:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783438613137303339316637646334323434346538666132","id":6153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6376:25:35","typeDescriptions":{"typeIdentifier":"t_rational_1404880482679654955896180642_by_1","typeString":"int_const 1404880482679654955896180642"},"value":"0x48a170391f7dc42444e8fa2"},"src":"6368:33:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6155,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6367:35:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6406:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"6367:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6359:50:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6159,"nodeType":"ExpressionStatement","src":"6359:50:35"}},{"AST":{"nativeSrc":"6449:702:35","nodeType":"YulBlock","src":"6449:702:35","statements":[{"body":{"nativeSrc":"6551:31:35","nodeType":"YulBlock","src":"6551:31:35","statements":[{"nativeSrc":"6553:27:35","nodeType":"YulAssignment","src":"6553:27:35","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6570:1:35","nodeType":"YulLiteral","src":"6570:1:35","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"6566:3:35","nodeType":"YulIdentifier","src":"6566:3:35"},"nativeSrc":"6566:6:35","nodeType":"YulFunctionCall","src":"6566:6:35"},{"name":"price","nativeSrc":"6574:5:35","nodeType":"YulIdentifier","src":"6574:5:35"}],"functionName":{"name":"div","nativeSrc":"6562:3:35","nodeType":"YulIdentifier","src":"6562:3:35"},"nativeSrc":"6562:18:35","nodeType":"YulFunctionCall","src":"6562:18:35"},"variableNames":[{"name":"price","nativeSrc":"6553:5:35","nodeType":"YulIdentifier","src":"6553:5:35"}]}]},"condition":{"arguments":[{"name":"tick","nativeSrc":"6542:4:35","nodeType":"YulIdentifier","src":"6542:4:35"},{"kind":"number","nativeSrc":"6548:1:35","nodeType":"YulLiteral","src":"6548:1:35","type":"","value":"0"}],"functionName":{"name":"sgt","nativeSrc":"6538:3:35","nodeType":"YulIdentifier","src":"6538:3:35"},"nativeSrc":"6538:12:35","nodeType":"YulFunctionCall","src":"6538:12:35"},"nativeSrc":"6535:47:35","nodeType":"YulIf","src":"6535:47:35"},{"nativeSrc":"7082:55:35","nodeType":"YulAssignment","src":"7082:55:35","value":{"arguments":[{"kind":"number","nativeSrc":"7102:2:35","nodeType":"YulLiteral","src":"7102:2:35","type":"","value":"32"},{"arguments":[{"name":"price","nativeSrc":"7110:5:35","nodeType":"YulIdentifier","src":"7110:5:35"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7125:2:35","nodeType":"YulLiteral","src":"7125:2:35","type":"","value":"32"},{"kind":"number","nativeSrc":"7129:1:35","nodeType":"YulLiteral","src":"7129:1:35","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7121:3:35","nodeType":"YulIdentifier","src":"7121:3:35"},"nativeSrc":"7121:10:35","nodeType":"YulFunctionCall","src":"7121:10:35"},{"kind":"number","nativeSrc":"7133:1:35","nodeType":"YulLiteral","src":"7133:1:35","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7117:3:35","nodeType":"YulIdentifier","src":"7117:3:35"},"nativeSrc":"7117:18:35","nodeType":"YulFunctionCall","src":"7117:18:35"}],"functionName":{"name":"add","nativeSrc":"7106:3:35","nodeType":"YulIdentifier","src":"7106:3:35"},"nativeSrc":"7106:30:35","nodeType":"YulFunctionCall","src":"7106:30:35"}],"functionName":{"name":"shr","nativeSrc":"7098:3:35","nodeType":"YulIdentifier","src":"7098:3:35"},"nativeSrc":"7098:39:35","nodeType":"YulFunctionCall","src":"7098:39:35"},"variableNames":[{"name":"sqrtPriceX96","nativeSrc":"7082:12:35","nodeType":"YulIdentifier","src":"7082:12:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5873,"isOffset":false,"isSlot":false,"src":"6553:5:35","valueSize":1},{"declaration":5873,"isOffset":false,"isSlot":false,"src":"6574:5:35","valueSize":1},{"declaration":5873,"isOffset":false,"isSlot":false,"src":"7110:5:35","valueSize":1},{"declaration":5848,"isOffset":false,"isSlot":false,"src":"7082:12:35","valueSize":1},{"declaration":5845,"isOffset":false,"isSlot":false,"src":"6542:4:35","valueSize":1}],"flags":["memory-safe"],"id":6161,"nodeType":"InlineAssembly","src":"6424:727:35"}]}]},"documentation":{"id":5843,"nodeType":"StructuredDocumentation","src":"2841:303:35","text":"@notice Calculates sqrt(1.0001^tick) * 2^96\n @dev Throws if |tick| > max tick\n @param tick The input tick for the above formula\n @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the price of the two assets (currency1/currency0)\n at the given tick"},"id":6164,"implemented":true,"kind":"function","modifiers":[],"name":"getSqrtPriceAtTick","nameLocation":"3158:18:35","nodeType":"FunctionDefinition","parameters":{"id":5846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5845,"mutability":"mutable","name":"tick","nameLocation":"3183:4:35","nodeType":"VariableDeclaration","scope":6164,"src":"3177:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5844,"name":"int24","nodeType":"ElementaryTypeName","src":"3177:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3176:12:35"},"returnParameters":{"id":5849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5848,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"3220:12:35","nodeType":"VariableDeclaration","scope":6164,"src":"3212:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5847,"name":"uint160","nodeType":"ElementaryTypeName","src":"3212:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"3211:22:35"},"scope":6305,"src":"3149:4018:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6303,"nodeType":"Block","src":"7712:4667:35","statements":[{"id":6302,"nodeType":"UncheckedBlock","src":"7722:4651:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6172,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6167,"src":"8183:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6173,"name":"MIN_SQRT_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"8198:14:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8183:29:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":6175,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8182:31:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6176,"name":"MAX_SQRT_PRICE_MINUS_MIN_SQRT_PRICE_MINUS_ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5808,"src":"8216:45:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8182:79:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6187,"nodeType":"IfStatement","src":"8178:168:35","trueBody":{"id":6186,"nodeType":"Block","src":"8263:83:35","statements":[{"expression":{"arguments":[{"id":6183,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6167,"src":"8318:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"id":6178,"name":"InvalidSqrtPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5771,"src":"8281:16:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint160_$returns$_t_error_$","typeString":"function (uint160) pure returns (error)"}},"id":6181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8298:8:35","memberName":"selector","nodeType":"MemberAccess","src":"8281:25:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":6182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8307:10:35","memberName":"revertWith","nodeType":"MemberAccess","referencedDeclaration":2304,"src":"8281:36:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$_t_uint160_$returns$__$attached_to$_t_bytes4_$","typeString":"function (bytes4,uint160) pure"}},"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8281:50:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6185,"nodeType":"ExpressionStatement","src":"8281:50:35"}]}},{"assignments":[6189],"declarations":[{"constant":false,"id":6189,"mutability":"mutable","name":"price","nameLocation":"8368:5:35","nodeType":"VariableDeclaration","scope":6302,"src":"8360:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6188,"name":"uint256","nodeType":"ElementaryTypeName","src":"8360:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6196,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6192,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6167,"src":"8384:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8376:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6190,"name":"uint256","nodeType":"ElementaryTypeName","src":"8376:7:35","typeDescriptions":{}}},"id":6193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8376:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":6194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8401:2:35","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8376:27:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8360:43:35"},{"assignments":[6198],"declarations":[{"constant":false,"id":6198,"mutability":"mutable","name":"r","nameLocation":"8426:1:35","nodeType":"VariableDeclaration","scope":6302,"src":"8418:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6197,"name":"uint256","nodeType":"ElementaryTypeName","src":"8418:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6200,"initialValue":{"id":6199,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"8430:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8418:17:35"},{"assignments":[6202],"declarations":[{"constant":false,"id":6202,"mutability":"mutable","name":"msb","nameLocation":"8457:3:35","nodeType":"VariableDeclaration","scope":6302,"src":"8449:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6201,"name":"uint256","nodeType":"ElementaryTypeName","src":"8449:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6207,"initialValue":{"arguments":[{"id":6205,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"8490:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6203,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8949,"src":"8463:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$8949_$","typeString":"type(library BitMath)"}},"id":6204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8471:18:35","memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":8932,"src":"8463:26:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":6206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8463:29:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8449:43:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6208,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6202,"src":"8511:3:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"313238","id":6209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8518:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8511:10:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":6227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6220,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"8566:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6221,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"8570:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313237","id":6222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8580:3:35","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6223,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6202,"src":"8586:3:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8580:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6225,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8579:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8570:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8566:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6228,"nodeType":"ExpressionStatement","src":"8566:24:35"},"id":6229,"nodeType":"IfStatement","src":"8507:83:35","trueBody":{"expression":{"id":6218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6211,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"8523:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6212,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"8527:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6213,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6202,"src":"8537:3:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313237","id":6214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8543:3:35","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"8537:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6216,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8536:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8527:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8523:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6219,"nodeType":"ExpressionStatement","src":"8523:24:35"}},{"assignments":[6231],"declarations":[{"constant":false,"id":6231,"mutability":"mutable","name":"log_2","nameLocation":"8612:5:35","nodeType":"VariableDeclaration","scope":6302,"src":"8605:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6230,"name":"int256","nodeType":"ElementaryTypeName","src":"8605:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6241,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6234,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6202,"src":"8628:3:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8621:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6232,"name":"int256","nodeType":"ElementaryTypeName","src":"8621:6:35","typeDescriptions":{}}},"id":6235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8621:11:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313238","id":6236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8635:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8621:17:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6238,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8620:19:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":6239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8643:2:35","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8620:25:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"8605:40:35"},{"AST":{"nativeSrc":"8685:171:35","nodeType":"YulBlock","src":"8685:171:35","statements":[{"nativeSrc":"8703:24:35","nodeType":"YulAssignment","src":"8703:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"8712:3:35","nodeType":"YulLiteral","src":"8712:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"8721:1:35","nodeType":"YulIdentifier","src":"8721:1:35"},{"name":"r","nativeSrc":"8724:1:35","nodeType":"YulIdentifier","src":"8724:1:35"}],"functionName":{"name":"mul","nativeSrc":"8717:3:35","nodeType":"YulIdentifier","src":"8717:3:35"},"nativeSrc":"8717:9:35","nodeType":"YulFunctionCall","src":"8717:9:35"}],"functionName":{"name":"shr","nativeSrc":"8708:3:35","nodeType":"YulIdentifier","src":"8708:3:35"},"nativeSrc":"8708:19:35","nodeType":"YulFunctionCall","src":"8708:19:35"},"variableNames":[{"name":"r","nativeSrc":"8703:1:35","nodeType":"YulIdentifier","src":"8703:1:35"}]},{"nativeSrc":"8744:20:35","nodeType":"YulVariableDeclaration","src":"8744:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"8757:3:35","nodeType":"YulLiteral","src":"8757:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"8762:1:35","nodeType":"YulIdentifier","src":"8762:1:35"}],"functionName":{"name":"shr","nativeSrc":"8753:3:35","nodeType":"YulIdentifier","src":"8753:3:35"},"nativeSrc":"8753:11:35","nodeType":"YulFunctionCall","src":"8753:11:35"},"variables":[{"name":"f","nativeSrc":"8748:1:35","nodeType":"YulTypedName","src":"8748:1:35","type":""}]},{"nativeSrc":"8781:30:35","nodeType":"YulAssignment","src":"8781:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"8793:5:35","nodeType":"YulIdentifier","src":"8793:5:35"},{"arguments":[{"kind":"number","nativeSrc":"8804:2:35","nodeType":"YulLiteral","src":"8804:2:35","type":"","value":"63"},{"name":"f","nativeSrc":"8808:1:35","nodeType":"YulIdentifier","src":"8808:1:35"}],"functionName":{"name":"shl","nativeSrc":"8800:3:35","nodeType":"YulIdentifier","src":"8800:3:35"},"nativeSrc":"8800:10:35","nodeType":"YulFunctionCall","src":"8800:10:35"}],"functionName":{"name":"or","nativeSrc":"8790:2:35","nodeType":"YulIdentifier","src":"8790:2:35"},"nativeSrc":"8790:21:35","nodeType":"YulFunctionCall","src":"8790:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"8781:5:35","nodeType":"YulIdentifier","src":"8781:5:35"}]},{"nativeSrc":"8828:14:35","nodeType":"YulAssignment","src":"8828:14:35","value":{"arguments":[{"name":"f","nativeSrc":"8837:1:35","nodeType":"YulIdentifier","src":"8837:1:35"},{"name":"r","nativeSrc":"8840:1:35","nodeType":"YulIdentifier","src":"8840:1:35"}],"functionName":{"name":"shr","nativeSrc":"8833:3:35","nodeType":"YulIdentifier","src":"8833:3:35"},"nativeSrc":"8833:9:35","nodeType":"YulFunctionCall","src":"8833:9:35"},"variableNames":[{"name":"r","nativeSrc":"8828:1:35","nodeType":"YulIdentifier","src":"8828:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"8781:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"8793:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8703:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8721:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8724:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8762:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8828:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8840:1:35","valueSize":1}],"flags":["memory-safe"],"id":6242,"nodeType":"InlineAssembly","src":"8660:196:35"},{"AST":{"nativeSrc":"8894:171:35","nodeType":"YulBlock","src":"8894:171:35","statements":[{"nativeSrc":"8912:24:35","nodeType":"YulAssignment","src":"8912:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"8921:3:35","nodeType":"YulLiteral","src":"8921:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"8930:1:35","nodeType":"YulIdentifier","src":"8930:1:35"},{"name":"r","nativeSrc":"8933:1:35","nodeType":"YulIdentifier","src":"8933:1:35"}],"functionName":{"name":"mul","nativeSrc":"8926:3:35","nodeType":"YulIdentifier","src":"8926:3:35"},"nativeSrc":"8926:9:35","nodeType":"YulFunctionCall","src":"8926:9:35"}],"functionName":{"name":"shr","nativeSrc":"8917:3:35","nodeType":"YulIdentifier","src":"8917:3:35"},"nativeSrc":"8917:19:35","nodeType":"YulFunctionCall","src":"8917:19:35"},"variableNames":[{"name":"r","nativeSrc":"8912:1:35","nodeType":"YulIdentifier","src":"8912:1:35"}]},{"nativeSrc":"8953:20:35","nodeType":"YulVariableDeclaration","src":"8953:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"8966:3:35","nodeType":"YulLiteral","src":"8966:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"8971:1:35","nodeType":"YulIdentifier","src":"8971:1:35"}],"functionName":{"name":"shr","nativeSrc":"8962:3:35","nodeType":"YulIdentifier","src":"8962:3:35"},"nativeSrc":"8962:11:35","nodeType":"YulFunctionCall","src":"8962:11:35"},"variables":[{"name":"f","nativeSrc":"8957:1:35","nodeType":"YulTypedName","src":"8957:1:35","type":""}]},{"nativeSrc":"8990:30:35","nodeType":"YulAssignment","src":"8990:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"9002:5:35","nodeType":"YulIdentifier","src":"9002:5:35"},{"arguments":[{"kind":"number","nativeSrc":"9013:2:35","nodeType":"YulLiteral","src":"9013:2:35","type":"","value":"62"},{"name":"f","nativeSrc":"9017:1:35","nodeType":"YulIdentifier","src":"9017:1:35"}],"functionName":{"name":"shl","nativeSrc":"9009:3:35","nodeType":"YulIdentifier","src":"9009:3:35"},"nativeSrc":"9009:10:35","nodeType":"YulFunctionCall","src":"9009:10:35"}],"functionName":{"name":"or","nativeSrc":"8999:2:35","nodeType":"YulIdentifier","src":"8999:2:35"},"nativeSrc":"8999:21:35","nodeType":"YulFunctionCall","src":"8999:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"8990:5:35","nodeType":"YulIdentifier","src":"8990:5:35"}]},{"nativeSrc":"9037:14:35","nodeType":"YulAssignment","src":"9037:14:35","value":{"arguments":[{"name":"f","nativeSrc":"9046:1:35","nodeType":"YulIdentifier","src":"9046:1:35"},{"name":"r","nativeSrc":"9049:1:35","nodeType":"YulIdentifier","src":"9049:1:35"}],"functionName":{"name":"shr","nativeSrc":"9042:3:35","nodeType":"YulIdentifier","src":"9042:3:35"},"nativeSrc":"9042:9:35","nodeType":"YulFunctionCall","src":"9042:9:35"},"variableNames":[{"name":"r","nativeSrc":"9037:1:35","nodeType":"YulIdentifier","src":"9037:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"8990:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9002:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8912:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8930:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8933:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"8971:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9037:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9049:1:35","valueSize":1}],"flags":["memory-safe"],"id":6243,"nodeType":"InlineAssembly","src":"8869:196:35"},{"AST":{"nativeSrc":"9103:171:35","nodeType":"YulBlock","src":"9103:171:35","statements":[{"nativeSrc":"9121:24:35","nodeType":"YulAssignment","src":"9121:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"9130:3:35","nodeType":"YulLiteral","src":"9130:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"9139:1:35","nodeType":"YulIdentifier","src":"9139:1:35"},{"name":"r","nativeSrc":"9142:1:35","nodeType":"YulIdentifier","src":"9142:1:35"}],"functionName":{"name":"mul","nativeSrc":"9135:3:35","nodeType":"YulIdentifier","src":"9135:3:35"},"nativeSrc":"9135:9:35","nodeType":"YulFunctionCall","src":"9135:9:35"}],"functionName":{"name":"shr","nativeSrc":"9126:3:35","nodeType":"YulIdentifier","src":"9126:3:35"},"nativeSrc":"9126:19:35","nodeType":"YulFunctionCall","src":"9126:19:35"},"variableNames":[{"name":"r","nativeSrc":"9121:1:35","nodeType":"YulIdentifier","src":"9121:1:35"}]},{"nativeSrc":"9162:20:35","nodeType":"YulVariableDeclaration","src":"9162:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"9175:3:35","nodeType":"YulLiteral","src":"9175:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"9180:1:35","nodeType":"YulIdentifier","src":"9180:1:35"}],"functionName":{"name":"shr","nativeSrc":"9171:3:35","nodeType":"YulIdentifier","src":"9171:3:35"},"nativeSrc":"9171:11:35","nodeType":"YulFunctionCall","src":"9171:11:35"},"variables":[{"name":"f","nativeSrc":"9166:1:35","nodeType":"YulTypedName","src":"9166:1:35","type":""}]},{"nativeSrc":"9199:30:35","nodeType":"YulAssignment","src":"9199:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"9211:5:35","nodeType":"YulIdentifier","src":"9211:5:35"},{"arguments":[{"kind":"number","nativeSrc":"9222:2:35","nodeType":"YulLiteral","src":"9222:2:35","type":"","value":"61"},{"name":"f","nativeSrc":"9226:1:35","nodeType":"YulIdentifier","src":"9226:1:35"}],"functionName":{"name":"shl","nativeSrc":"9218:3:35","nodeType":"YulIdentifier","src":"9218:3:35"},"nativeSrc":"9218:10:35","nodeType":"YulFunctionCall","src":"9218:10:35"}],"functionName":{"name":"or","nativeSrc":"9208:2:35","nodeType":"YulIdentifier","src":"9208:2:35"},"nativeSrc":"9208:21:35","nodeType":"YulFunctionCall","src":"9208:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"9199:5:35","nodeType":"YulIdentifier","src":"9199:5:35"}]},{"nativeSrc":"9246:14:35","nodeType":"YulAssignment","src":"9246:14:35","value":{"arguments":[{"name":"f","nativeSrc":"9255:1:35","nodeType":"YulIdentifier","src":"9255:1:35"},{"name":"r","nativeSrc":"9258:1:35","nodeType":"YulIdentifier","src":"9258:1:35"}],"functionName":{"name":"shr","nativeSrc":"9251:3:35","nodeType":"YulIdentifier","src":"9251:3:35"},"nativeSrc":"9251:9:35","nodeType":"YulFunctionCall","src":"9251:9:35"},"variableNames":[{"name":"r","nativeSrc":"9246:1:35","nodeType":"YulIdentifier","src":"9246:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9199:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9211:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9121:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9139:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9142:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9180:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9246:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9258:1:35","valueSize":1}],"flags":["memory-safe"],"id":6244,"nodeType":"InlineAssembly","src":"9078:196:35"},{"AST":{"nativeSrc":"9312:171:35","nodeType":"YulBlock","src":"9312:171:35","statements":[{"nativeSrc":"9330:24:35","nodeType":"YulAssignment","src":"9330:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"9339:3:35","nodeType":"YulLiteral","src":"9339:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"9348:1:35","nodeType":"YulIdentifier","src":"9348:1:35"},{"name":"r","nativeSrc":"9351:1:35","nodeType":"YulIdentifier","src":"9351:1:35"}],"functionName":{"name":"mul","nativeSrc":"9344:3:35","nodeType":"YulIdentifier","src":"9344:3:35"},"nativeSrc":"9344:9:35","nodeType":"YulFunctionCall","src":"9344:9:35"}],"functionName":{"name":"shr","nativeSrc":"9335:3:35","nodeType":"YulIdentifier","src":"9335:3:35"},"nativeSrc":"9335:19:35","nodeType":"YulFunctionCall","src":"9335:19:35"},"variableNames":[{"name":"r","nativeSrc":"9330:1:35","nodeType":"YulIdentifier","src":"9330:1:35"}]},{"nativeSrc":"9371:20:35","nodeType":"YulVariableDeclaration","src":"9371:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"9384:3:35","nodeType":"YulLiteral","src":"9384:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"9389:1:35","nodeType":"YulIdentifier","src":"9389:1:35"}],"functionName":{"name":"shr","nativeSrc":"9380:3:35","nodeType":"YulIdentifier","src":"9380:3:35"},"nativeSrc":"9380:11:35","nodeType":"YulFunctionCall","src":"9380:11:35"},"variables":[{"name":"f","nativeSrc":"9375:1:35","nodeType":"YulTypedName","src":"9375:1:35","type":""}]},{"nativeSrc":"9408:30:35","nodeType":"YulAssignment","src":"9408:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"9420:5:35","nodeType":"YulIdentifier","src":"9420:5:35"},{"arguments":[{"kind":"number","nativeSrc":"9431:2:35","nodeType":"YulLiteral","src":"9431:2:35","type":"","value":"60"},{"name":"f","nativeSrc":"9435:1:35","nodeType":"YulIdentifier","src":"9435:1:35"}],"functionName":{"name":"shl","nativeSrc":"9427:3:35","nodeType":"YulIdentifier","src":"9427:3:35"},"nativeSrc":"9427:10:35","nodeType":"YulFunctionCall","src":"9427:10:35"}],"functionName":{"name":"or","nativeSrc":"9417:2:35","nodeType":"YulIdentifier","src":"9417:2:35"},"nativeSrc":"9417:21:35","nodeType":"YulFunctionCall","src":"9417:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"9408:5:35","nodeType":"YulIdentifier","src":"9408:5:35"}]},{"nativeSrc":"9455:14:35","nodeType":"YulAssignment","src":"9455:14:35","value":{"arguments":[{"name":"f","nativeSrc":"9464:1:35","nodeType":"YulIdentifier","src":"9464:1:35"},{"name":"r","nativeSrc":"9467:1:35","nodeType":"YulIdentifier","src":"9467:1:35"}],"functionName":{"name":"shr","nativeSrc":"9460:3:35","nodeType":"YulIdentifier","src":"9460:3:35"},"nativeSrc":"9460:9:35","nodeType":"YulFunctionCall","src":"9460:9:35"},"variableNames":[{"name":"r","nativeSrc":"9455:1:35","nodeType":"YulIdentifier","src":"9455:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9408:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9420:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9330:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9348:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9351:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9389:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9455:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9467:1:35","valueSize":1}],"flags":["memory-safe"],"id":6245,"nodeType":"InlineAssembly","src":"9287:196:35"},{"AST":{"nativeSrc":"9521:171:35","nodeType":"YulBlock","src":"9521:171:35","statements":[{"nativeSrc":"9539:24:35","nodeType":"YulAssignment","src":"9539:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"9548:3:35","nodeType":"YulLiteral","src":"9548:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"9557:1:35","nodeType":"YulIdentifier","src":"9557:1:35"},{"name":"r","nativeSrc":"9560:1:35","nodeType":"YulIdentifier","src":"9560:1:35"}],"functionName":{"name":"mul","nativeSrc":"9553:3:35","nodeType":"YulIdentifier","src":"9553:3:35"},"nativeSrc":"9553:9:35","nodeType":"YulFunctionCall","src":"9553:9:35"}],"functionName":{"name":"shr","nativeSrc":"9544:3:35","nodeType":"YulIdentifier","src":"9544:3:35"},"nativeSrc":"9544:19:35","nodeType":"YulFunctionCall","src":"9544:19:35"},"variableNames":[{"name":"r","nativeSrc":"9539:1:35","nodeType":"YulIdentifier","src":"9539:1:35"}]},{"nativeSrc":"9580:20:35","nodeType":"YulVariableDeclaration","src":"9580:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"9593:3:35","nodeType":"YulLiteral","src":"9593:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"9598:1:35","nodeType":"YulIdentifier","src":"9598:1:35"}],"functionName":{"name":"shr","nativeSrc":"9589:3:35","nodeType":"YulIdentifier","src":"9589:3:35"},"nativeSrc":"9589:11:35","nodeType":"YulFunctionCall","src":"9589:11:35"},"variables":[{"name":"f","nativeSrc":"9584:1:35","nodeType":"YulTypedName","src":"9584:1:35","type":""}]},{"nativeSrc":"9617:30:35","nodeType":"YulAssignment","src":"9617:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"9629:5:35","nodeType":"YulIdentifier","src":"9629:5:35"},{"arguments":[{"kind":"number","nativeSrc":"9640:2:35","nodeType":"YulLiteral","src":"9640:2:35","type":"","value":"59"},{"name":"f","nativeSrc":"9644:1:35","nodeType":"YulIdentifier","src":"9644:1:35"}],"functionName":{"name":"shl","nativeSrc":"9636:3:35","nodeType":"YulIdentifier","src":"9636:3:35"},"nativeSrc":"9636:10:35","nodeType":"YulFunctionCall","src":"9636:10:35"}],"functionName":{"name":"or","nativeSrc":"9626:2:35","nodeType":"YulIdentifier","src":"9626:2:35"},"nativeSrc":"9626:21:35","nodeType":"YulFunctionCall","src":"9626:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"9617:5:35","nodeType":"YulIdentifier","src":"9617:5:35"}]},{"nativeSrc":"9664:14:35","nodeType":"YulAssignment","src":"9664:14:35","value":{"arguments":[{"name":"f","nativeSrc":"9673:1:35","nodeType":"YulIdentifier","src":"9673:1:35"},{"name":"r","nativeSrc":"9676:1:35","nodeType":"YulIdentifier","src":"9676:1:35"}],"functionName":{"name":"shr","nativeSrc":"9669:3:35","nodeType":"YulIdentifier","src":"9669:3:35"},"nativeSrc":"9669:9:35","nodeType":"YulFunctionCall","src":"9669:9:35"},"variableNames":[{"name":"r","nativeSrc":"9664:1:35","nodeType":"YulIdentifier","src":"9664:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9617:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9629:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9539:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9557:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9560:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9598:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9664:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9676:1:35","valueSize":1}],"flags":["memory-safe"],"id":6246,"nodeType":"InlineAssembly","src":"9496:196:35"},{"AST":{"nativeSrc":"9730:171:35","nodeType":"YulBlock","src":"9730:171:35","statements":[{"nativeSrc":"9748:24:35","nodeType":"YulAssignment","src":"9748:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"9757:3:35","nodeType":"YulLiteral","src":"9757:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"9766:1:35","nodeType":"YulIdentifier","src":"9766:1:35"},{"name":"r","nativeSrc":"9769:1:35","nodeType":"YulIdentifier","src":"9769:1:35"}],"functionName":{"name":"mul","nativeSrc":"9762:3:35","nodeType":"YulIdentifier","src":"9762:3:35"},"nativeSrc":"9762:9:35","nodeType":"YulFunctionCall","src":"9762:9:35"}],"functionName":{"name":"shr","nativeSrc":"9753:3:35","nodeType":"YulIdentifier","src":"9753:3:35"},"nativeSrc":"9753:19:35","nodeType":"YulFunctionCall","src":"9753:19:35"},"variableNames":[{"name":"r","nativeSrc":"9748:1:35","nodeType":"YulIdentifier","src":"9748:1:35"}]},{"nativeSrc":"9789:20:35","nodeType":"YulVariableDeclaration","src":"9789:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"9802:3:35","nodeType":"YulLiteral","src":"9802:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"9807:1:35","nodeType":"YulIdentifier","src":"9807:1:35"}],"functionName":{"name":"shr","nativeSrc":"9798:3:35","nodeType":"YulIdentifier","src":"9798:3:35"},"nativeSrc":"9798:11:35","nodeType":"YulFunctionCall","src":"9798:11:35"},"variables":[{"name":"f","nativeSrc":"9793:1:35","nodeType":"YulTypedName","src":"9793:1:35","type":""}]},{"nativeSrc":"9826:30:35","nodeType":"YulAssignment","src":"9826:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"9838:5:35","nodeType":"YulIdentifier","src":"9838:5:35"},{"arguments":[{"kind":"number","nativeSrc":"9849:2:35","nodeType":"YulLiteral","src":"9849:2:35","type":"","value":"58"},{"name":"f","nativeSrc":"9853:1:35","nodeType":"YulIdentifier","src":"9853:1:35"}],"functionName":{"name":"shl","nativeSrc":"9845:3:35","nodeType":"YulIdentifier","src":"9845:3:35"},"nativeSrc":"9845:10:35","nodeType":"YulFunctionCall","src":"9845:10:35"}],"functionName":{"name":"or","nativeSrc":"9835:2:35","nodeType":"YulIdentifier","src":"9835:2:35"},"nativeSrc":"9835:21:35","nodeType":"YulFunctionCall","src":"9835:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"9826:5:35","nodeType":"YulIdentifier","src":"9826:5:35"}]},{"nativeSrc":"9873:14:35","nodeType":"YulAssignment","src":"9873:14:35","value":{"arguments":[{"name":"f","nativeSrc":"9882:1:35","nodeType":"YulIdentifier","src":"9882:1:35"},{"name":"r","nativeSrc":"9885:1:35","nodeType":"YulIdentifier","src":"9885:1:35"}],"functionName":{"name":"shr","nativeSrc":"9878:3:35","nodeType":"YulIdentifier","src":"9878:3:35"},"nativeSrc":"9878:9:35","nodeType":"YulFunctionCall","src":"9878:9:35"},"variableNames":[{"name":"r","nativeSrc":"9873:1:35","nodeType":"YulIdentifier","src":"9873:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9826:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"9838:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9748:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9766:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9769:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9807:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9873:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9885:1:35","valueSize":1}],"flags":["memory-safe"],"id":6247,"nodeType":"InlineAssembly","src":"9705:196:35"},{"AST":{"nativeSrc":"9939:171:35","nodeType":"YulBlock","src":"9939:171:35","statements":[{"nativeSrc":"9957:24:35","nodeType":"YulAssignment","src":"9957:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"9966:3:35","nodeType":"YulLiteral","src":"9966:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"9975:1:35","nodeType":"YulIdentifier","src":"9975:1:35"},{"name":"r","nativeSrc":"9978:1:35","nodeType":"YulIdentifier","src":"9978:1:35"}],"functionName":{"name":"mul","nativeSrc":"9971:3:35","nodeType":"YulIdentifier","src":"9971:3:35"},"nativeSrc":"9971:9:35","nodeType":"YulFunctionCall","src":"9971:9:35"}],"functionName":{"name":"shr","nativeSrc":"9962:3:35","nodeType":"YulIdentifier","src":"9962:3:35"},"nativeSrc":"9962:19:35","nodeType":"YulFunctionCall","src":"9962:19:35"},"variableNames":[{"name":"r","nativeSrc":"9957:1:35","nodeType":"YulIdentifier","src":"9957:1:35"}]},{"nativeSrc":"9998:20:35","nodeType":"YulVariableDeclaration","src":"9998:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"10011:3:35","nodeType":"YulLiteral","src":"10011:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"10016:1:35","nodeType":"YulIdentifier","src":"10016:1:35"}],"functionName":{"name":"shr","nativeSrc":"10007:3:35","nodeType":"YulIdentifier","src":"10007:3:35"},"nativeSrc":"10007:11:35","nodeType":"YulFunctionCall","src":"10007:11:35"},"variables":[{"name":"f","nativeSrc":"10002:1:35","nodeType":"YulTypedName","src":"10002:1:35","type":""}]},{"nativeSrc":"10035:30:35","nodeType":"YulAssignment","src":"10035:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"10047:5:35","nodeType":"YulIdentifier","src":"10047:5:35"},{"arguments":[{"kind":"number","nativeSrc":"10058:2:35","nodeType":"YulLiteral","src":"10058:2:35","type":"","value":"57"},{"name":"f","nativeSrc":"10062:1:35","nodeType":"YulIdentifier","src":"10062:1:35"}],"functionName":{"name":"shl","nativeSrc":"10054:3:35","nodeType":"YulIdentifier","src":"10054:3:35"},"nativeSrc":"10054:10:35","nodeType":"YulFunctionCall","src":"10054:10:35"}],"functionName":{"name":"or","nativeSrc":"10044:2:35","nodeType":"YulIdentifier","src":"10044:2:35"},"nativeSrc":"10044:21:35","nodeType":"YulFunctionCall","src":"10044:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"10035:5:35","nodeType":"YulIdentifier","src":"10035:5:35"}]},{"nativeSrc":"10082:14:35","nodeType":"YulAssignment","src":"10082:14:35","value":{"arguments":[{"name":"f","nativeSrc":"10091:1:35","nodeType":"YulIdentifier","src":"10091:1:35"},{"name":"r","nativeSrc":"10094:1:35","nodeType":"YulIdentifier","src":"10094:1:35"}],"functionName":{"name":"shr","nativeSrc":"10087:3:35","nodeType":"YulIdentifier","src":"10087:3:35"},"nativeSrc":"10087:9:35","nodeType":"YulFunctionCall","src":"10087:9:35"},"variableNames":[{"name":"r","nativeSrc":"10082:1:35","nodeType":"YulIdentifier","src":"10082:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10035:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10047:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10016:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10082:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10094:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9957:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9975:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"9978:1:35","valueSize":1}],"flags":["memory-safe"],"id":6248,"nodeType":"InlineAssembly","src":"9914:196:35"},{"AST":{"nativeSrc":"10148:171:35","nodeType":"YulBlock","src":"10148:171:35","statements":[{"nativeSrc":"10166:24:35","nodeType":"YulAssignment","src":"10166:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"10175:3:35","nodeType":"YulLiteral","src":"10175:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"10184:1:35","nodeType":"YulIdentifier","src":"10184:1:35"},{"name":"r","nativeSrc":"10187:1:35","nodeType":"YulIdentifier","src":"10187:1:35"}],"functionName":{"name":"mul","nativeSrc":"10180:3:35","nodeType":"YulIdentifier","src":"10180:3:35"},"nativeSrc":"10180:9:35","nodeType":"YulFunctionCall","src":"10180:9:35"}],"functionName":{"name":"shr","nativeSrc":"10171:3:35","nodeType":"YulIdentifier","src":"10171:3:35"},"nativeSrc":"10171:19:35","nodeType":"YulFunctionCall","src":"10171:19:35"},"variableNames":[{"name":"r","nativeSrc":"10166:1:35","nodeType":"YulIdentifier","src":"10166:1:35"}]},{"nativeSrc":"10207:20:35","nodeType":"YulVariableDeclaration","src":"10207:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"10220:3:35","nodeType":"YulLiteral","src":"10220:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"10225:1:35","nodeType":"YulIdentifier","src":"10225:1:35"}],"functionName":{"name":"shr","nativeSrc":"10216:3:35","nodeType":"YulIdentifier","src":"10216:3:35"},"nativeSrc":"10216:11:35","nodeType":"YulFunctionCall","src":"10216:11:35"},"variables":[{"name":"f","nativeSrc":"10211:1:35","nodeType":"YulTypedName","src":"10211:1:35","type":""}]},{"nativeSrc":"10244:30:35","nodeType":"YulAssignment","src":"10244:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"10256:5:35","nodeType":"YulIdentifier","src":"10256:5:35"},{"arguments":[{"kind":"number","nativeSrc":"10267:2:35","nodeType":"YulLiteral","src":"10267:2:35","type":"","value":"56"},{"name":"f","nativeSrc":"10271:1:35","nodeType":"YulIdentifier","src":"10271:1:35"}],"functionName":{"name":"shl","nativeSrc":"10263:3:35","nodeType":"YulIdentifier","src":"10263:3:35"},"nativeSrc":"10263:10:35","nodeType":"YulFunctionCall","src":"10263:10:35"}],"functionName":{"name":"or","nativeSrc":"10253:2:35","nodeType":"YulIdentifier","src":"10253:2:35"},"nativeSrc":"10253:21:35","nodeType":"YulFunctionCall","src":"10253:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"10244:5:35","nodeType":"YulIdentifier","src":"10244:5:35"}]},{"nativeSrc":"10291:14:35","nodeType":"YulAssignment","src":"10291:14:35","value":{"arguments":[{"name":"f","nativeSrc":"10300:1:35","nodeType":"YulIdentifier","src":"10300:1:35"},{"name":"r","nativeSrc":"10303:1:35","nodeType":"YulIdentifier","src":"10303:1:35"}],"functionName":{"name":"shr","nativeSrc":"10296:3:35","nodeType":"YulIdentifier","src":"10296:3:35"},"nativeSrc":"10296:9:35","nodeType":"YulFunctionCall","src":"10296:9:35"},"variableNames":[{"name":"r","nativeSrc":"10291:1:35","nodeType":"YulIdentifier","src":"10291:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10244:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10256:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10166:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10184:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10187:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10225:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10291:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10303:1:35","valueSize":1}],"flags":["memory-safe"],"id":6249,"nodeType":"InlineAssembly","src":"10123:196:35"},{"AST":{"nativeSrc":"10357:171:35","nodeType":"YulBlock","src":"10357:171:35","statements":[{"nativeSrc":"10375:24:35","nodeType":"YulAssignment","src":"10375:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"10384:3:35","nodeType":"YulLiteral","src":"10384:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"10393:1:35","nodeType":"YulIdentifier","src":"10393:1:35"},{"name":"r","nativeSrc":"10396:1:35","nodeType":"YulIdentifier","src":"10396:1:35"}],"functionName":{"name":"mul","nativeSrc":"10389:3:35","nodeType":"YulIdentifier","src":"10389:3:35"},"nativeSrc":"10389:9:35","nodeType":"YulFunctionCall","src":"10389:9:35"}],"functionName":{"name":"shr","nativeSrc":"10380:3:35","nodeType":"YulIdentifier","src":"10380:3:35"},"nativeSrc":"10380:19:35","nodeType":"YulFunctionCall","src":"10380:19:35"},"variableNames":[{"name":"r","nativeSrc":"10375:1:35","nodeType":"YulIdentifier","src":"10375:1:35"}]},{"nativeSrc":"10416:20:35","nodeType":"YulVariableDeclaration","src":"10416:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"10429:3:35","nodeType":"YulLiteral","src":"10429:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"10434:1:35","nodeType":"YulIdentifier","src":"10434:1:35"}],"functionName":{"name":"shr","nativeSrc":"10425:3:35","nodeType":"YulIdentifier","src":"10425:3:35"},"nativeSrc":"10425:11:35","nodeType":"YulFunctionCall","src":"10425:11:35"},"variables":[{"name":"f","nativeSrc":"10420:1:35","nodeType":"YulTypedName","src":"10420:1:35","type":""}]},{"nativeSrc":"10453:30:35","nodeType":"YulAssignment","src":"10453:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"10465:5:35","nodeType":"YulIdentifier","src":"10465:5:35"},{"arguments":[{"kind":"number","nativeSrc":"10476:2:35","nodeType":"YulLiteral","src":"10476:2:35","type":"","value":"55"},{"name":"f","nativeSrc":"10480:1:35","nodeType":"YulIdentifier","src":"10480:1:35"}],"functionName":{"name":"shl","nativeSrc":"10472:3:35","nodeType":"YulIdentifier","src":"10472:3:35"},"nativeSrc":"10472:10:35","nodeType":"YulFunctionCall","src":"10472:10:35"}],"functionName":{"name":"or","nativeSrc":"10462:2:35","nodeType":"YulIdentifier","src":"10462:2:35"},"nativeSrc":"10462:21:35","nodeType":"YulFunctionCall","src":"10462:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"10453:5:35","nodeType":"YulIdentifier","src":"10453:5:35"}]},{"nativeSrc":"10500:14:35","nodeType":"YulAssignment","src":"10500:14:35","value":{"arguments":[{"name":"f","nativeSrc":"10509:1:35","nodeType":"YulIdentifier","src":"10509:1:35"},{"name":"r","nativeSrc":"10512:1:35","nodeType":"YulIdentifier","src":"10512:1:35"}],"functionName":{"name":"shr","nativeSrc":"10505:3:35","nodeType":"YulIdentifier","src":"10505:3:35"},"nativeSrc":"10505:9:35","nodeType":"YulFunctionCall","src":"10505:9:35"},"variableNames":[{"name":"r","nativeSrc":"10500:1:35","nodeType":"YulIdentifier","src":"10500:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10453:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10465:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10375:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10393:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10396:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10434:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10500:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10512:1:35","valueSize":1}],"flags":["memory-safe"],"id":6250,"nodeType":"InlineAssembly","src":"10332:196:35"},{"AST":{"nativeSrc":"10566:171:35","nodeType":"YulBlock","src":"10566:171:35","statements":[{"nativeSrc":"10584:24:35","nodeType":"YulAssignment","src":"10584:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"10593:3:35","nodeType":"YulLiteral","src":"10593:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"10602:1:35","nodeType":"YulIdentifier","src":"10602:1:35"},{"name":"r","nativeSrc":"10605:1:35","nodeType":"YulIdentifier","src":"10605:1:35"}],"functionName":{"name":"mul","nativeSrc":"10598:3:35","nodeType":"YulIdentifier","src":"10598:3:35"},"nativeSrc":"10598:9:35","nodeType":"YulFunctionCall","src":"10598:9:35"}],"functionName":{"name":"shr","nativeSrc":"10589:3:35","nodeType":"YulIdentifier","src":"10589:3:35"},"nativeSrc":"10589:19:35","nodeType":"YulFunctionCall","src":"10589:19:35"},"variableNames":[{"name":"r","nativeSrc":"10584:1:35","nodeType":"YulIdentifier","src":"10584:1:35"}]},{"nativeSrc":"10625:20:35","nodeType":"YulVariableDeclaration","src":"10625:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"10638:3:35","nodeType":"YulLiteral","src":"10638:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"10643:1:35","nodeType":"YulIdentifier","src":"10643:1:35"}],"functionName":{"name":"shr","nativeSrc":"10634:3:35","nodeType":"YulIdentifier","src":"10634:3:35"},"nativeSrc":"10634:11:35","nodeType":"YulFunctionCall","src":"10634:11:35"},"variables":[{"name":"f","nativeSrc":"10629:1:35","nodeType":"YulTypedName","src":"10629:1:35","type":""}]},{"nativeSrc":"10662:30:35","nodeType":"YulAssignment","src":"10662:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"10674:5:35","nodeType":"YulIdentifier","src":"10674:5:35"},{"arguments":[{"kind":"number","nativeSrc":"10685:2:35","nodeType":"YulLiteral","src":"10685:2:35","type":"","value":"54"},{"name":"f","nativeSrc":"10689:1:35","nodeType":"YulIdentifier","src":"10689:1:35"}],"functionName":{"name":"shl","nativeSrc":"10681:3:35","nodeType":"YulIdentifier","src":"10681:3:35"},"nativeSrc":"10681:10:35","nodeType":"YulFunctionCall","src":"10681:10:35"}],"functionName":{"name":"or","nativeSrc":"10671:2:35","nodeType":"YulIdentifier","src":"10671:2:35"},"nativeSrc":"10671:21:35","nodeType":"YulFunctionCall","src":"10671:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"10662:5:35","nodeType":"YulIdentifier","src":"10662:5:35"}]},{"nativeSrc":"10709:14:35","nodeType":"YulAssignment","src":"10709:14:35","value":{"arguments":[{"name":"f","nativeSrc":"10718:1:35","nodeType":"YulIdentifier","src":"10718:1:35"},{"name":"r","nativeSrc":"10721:1:35","nodeType":"YulIdentifier","src":"10721:1:35"}],"functionName":{"name":"shr","nativeSrc":"10714:3:35","nodeType":"YulIdentifier","src":"10714:3:35"},"nativeSrc":"10714:9:35","nodeType":"YulFunctionCall","src":"10714:9:35"},"variableNames":[{"name":"r","nativeSrc":"10709:1:35","nodeType":"YulIdentifier","src":"10709:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10662:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10674:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10584:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10602:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10605:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10643:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10709:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10721:1:35","valueSize":1}],"flags":["memory-safe"],"id":6251,"nodeType":"InlineAssembly","src":"10541:196:35"},{"AST":{"nativeSrc":"10775:171:35","nodeType":"YulBlock","src":"10775:171:35","statements":[{"nativeSrc":"10793:24:35","nodeType":"YulAssignment","src":"10793:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"10802:3:35","nodeType":"YulLiteral","src":"10802:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"10811:1:35","nodeType":"YulIdentifier","src":"10811:1:35"},{"name":"r","nativeSrc":"10814:1:35","nodeType":"YulIdentifier","src":"10814:1:35"}],"functionName":{"name":"mul","nativeSrc":"10807:3:35","nodeType":"YulIdentifier","src":"10807:3:35"},"nativeSrc":"10807:9:35","nodeType":"YulFunctionCall","src":"10807:9:35"}],"functionName":{"name":"shr","nativeSrc":"10798:3:35","nodeType":"YulIdentifier","src":"10798:3:35"},"nativeSrc":"10798:19:35","nodeType":"YulFunctionCall","src":"10798:19:35"},"variableNames":[{"name":"r","nativeSrc":"10793:1:35","nodeType":"YulIdentifier","src":"10793:1:35"}]},{"nativeSrc":"10834:20:35","nodeType":"YulVariableDeclaration","src":"10834:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"10847:3:35","nodeType":"YulLiteral","src":"10847:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"10852:1:35","nodeType":"YulIdentifier","src":"10852:1:35"}],"functionName":{"name":"shr","nativeSrc":"10843:3:35","nodeType":"YulIdentifier","src":"10843:3:35"},"nativeSrc":"10843:11:35","nodeType":"YulFunctionCall","src":"10843:11:35"},"variables":[{"name":"f","nativeSrc":"10838:1:35","nodeType":"YulTypedName","src":"10838:1:35","type":""}]},{"nativeSrc":"10871:30:35","nodeType":"YulAssignment","src":"10871:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"10883:5:35","nodeType":"YulIdentifier","src":"10883:5:35"},{"arguments":[{"kind":"number","nativeSrc":"10894:2:35","nodeType":"YulLiteral","src":"10894:2:35","type":"","value":"53"},{"name":"f","nativeSrc":"10898:1:35","nodeType":"YulIdentifier","src":"10898:1:35"}],"functionName":{"name":"shl","nativeSrc":"10890:3:35","nodeType":"YulIdentifier","src":"10890:3:35"},"nativeSrc":"10890:10:35","nodeType":"YulFunctionCall","src":"10890:10:35"}],"functionName":{"name":"or","nativeSrc":"10880:2:35","nodeType":"YulIdentifier","src":"10880:2:35"},"nativeSrc":"10880:21:35","nodeType":"YulFunctionCall","src":"10880:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"10871:5:35","nodeType":"YulIdentifier","src":"10871:5:35"}]},{"nativeSrc":"10918:14:35","nodeType":"YulAssignment","src":"10918:14:35","value":{"arguments":[{"name":"f","nativeSrc":"10927:1:35","nodeType":"YulIdentifier","src":"10927:1:35"},{"name":"r","nativeSrc":"10930:1:35","nodeType":"YulIdentifier","src":"10930:1:35"}],"functionName":{"name":"shr","nativeSrc":"10923:3:35","nodeType":"YulIdentifier","src":"10923:3:35"},"nativeSrc":"10923:9:35","nodeType":"YulFunctionCall","src":"10923:9:35"},"variableNames":[{"name":"r","nativeSrc":"10918:1:35","nodeType":"YulIdentifier","src":"10918:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10871:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"10883:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10793:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10811:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10814:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10852:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10918:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"10930:1:35","valueSize":1}],"flags":["memory-safe"],"id":6252,"nodeType":"InlineAssembly","src":"10750:196:35"},{"AST":{"nativeSrc":"10984:171:35","nodeType":"YulBlock","src":"10984:171:35","statements":[{"nativeSrc":"11002:24:35","nodeType":"YulAssignment","src":"11002:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"11011:3:35","nodeType":"YulLiteral","src":"11011:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"11020:1:35","nodeType":"YulIdentifier","src":"11020:1:35"},{"name":"r","nativeSrc":"11023:1:35","nodeType":"YulIdentifier","src":"11023:1:35"}],"functionName":{"name":"mul","nativeSrc":"11016:3:35","nodeType":"YulIdentifier","src":"11016:3:35"},"nativeSrc":"11016:9:35","nodeType":"YulFunctionCall","src":"11016:9:35"}],"functionName":{"name":"shr","nativeSrc":"11007:3:35","nodeType":"YulIdentifier","src":"11007:3:35"},"nativeSrc":"11007:19:35","nodeType":"YulFunctionCall","src":"11007:19:35"},"variableNames":[{"name":"r","nativeSrc":"11002:1:35","nodeType":"YulIdentifier","src":"11002:1:35"}]},{"nativeSrc":"11043:20:35","nodeType":"YulVariableDeclaration","src":"11043:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"11056:3:35","nodeType":"YulLiteral","src":"11056:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"11061:1:35","nodeType":"YulIdentifier","src":"11061:1:35"}],"functionName":{"name":"shr","nativeSrc":"11052:3:35","nodeType":"YulIdentifier","src":"11052:3:35"},"nativeSrc":"11052:11:35","nodeType":"YulFunctionCall","src":"11052:11:35"},"variables":[{"name":"f","nativeSrc":"11047:1:35","nodeType":"YulTypedName","src":"11047:1:35","type":""}]},{"nativeSrc":"11080:30:35","nodeType":"YulAssignment","src":"11080:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"11092:5:35","nodeType":"YulIdentifier","src":"11092:5:35"},{"arguments":[{"kind":"number","nativeSrc":"11103:2:35","nodeType":"YulLiteral","src":"11103:2:35","type":"","value":"52"},{"name":"f","nativeSrc":"11107:1:35","nodeType":"YulIdentifier","src":"11107:1:35"}],"functionName":{"name":"shl","nativeSrc":"11099:3:35","nodeType":"YulIdentifier","src":"11099:3:35"},"nativeSrc":"11099:10:35","nodeType":"YulFunctionCall","src":"11099:10:35"}],"functionName":{"name":"or","nativeSrc":"11089:2:35","nodeType":"YulIdentifier","src":"11089:2:35"},"nativeSrc":"11089:21:35","nodeType":"YulFunctionCall","src":"11089:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"11080:5:35","nodeType":"YulIdentifier","src":"11080:5:35"}]},{"nativeSrc":"11127:14:35","nodeType":"YulAssignment","src":"11127:14:35","value":{"arguments":[{"name":"f","nativeSrc":"11136:1:35","nodeType":"YulIdentifier","src":"11136:1:35"},{"name":"r","nativeSrc":"11139:1:35","nodeType":"YulIdentifier","src":"11139:1:35"}],"functionName":{"name":"shr","nativeSrc":"11132:3:35","nodeType":"YulIdentifier","src":"11132:3:35"},"nativeSrc":"11132:9:35","nodeType":"YulFunctionCall","src":"11132:9:35"},"variableNames":[{"name":"r","nativeSrc":"11127:1:35","nodeType":"YulIdentifier","src":"11127:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"11080:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"11092:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11002:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11020:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11023:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11061:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11127:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11139:1:35","valueSize":1}],"flags":["memory-safe"],"id":6253,"nodeType":"InlineAssembly","src":"10959:196:35"},{"AST":{"nativeSrc":"11193:171:35","nodeType":"YulBlock","src":"11193:171:35","statements":[{"nativeSrc":"11211:24:35","nodeType":"YulAssignment","src":"11211:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"11220:3:35","nodeType":"YulLiteral","src":"11220:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"11229:1:35","nodeType":"YulIdentifier","src":"11229:1:35"},{"name":"r","nativeSrc":"11232:1:35","nodeType":"YulIdentifier","src":"11232:1:35"}],"functionName":{"name":"mul","nativeSrc":"11225:3:35","nodeType":"YulIdentifier","src":"11225:3:35"},"nativeSrc":"11225:9:35","nodeType":"YulFunctionCall","src":"11225:9:35"}],"functionName":{"name":"shr","nativeSrc":"11216:3:35","nodeType":"YulIdentifier","src":"11216:3:35"},"nativeSrc":"11216:19:35","nodeType":"YulFunctionCall","src":"11216:19:35"},"variableNames":[{"name":"r","nativeSrc":"11211:1:35","nodeType":"YulIdentifier","src":"11211:1:35"}]},{"nativeSrc":"11252:20:35","nodeType":"YulVariableDeclaration","src":"11252:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"11265:3:35","nodeType":"YulLiteral","src":"11265:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"11270:1:35","nodeType":"YulIdentifier","src":"11270:1:35"}],"functionName":{"name":"shr","nativeSrc":"11261:3:35","nodeType":"YulIdentifier","src":"11261:3:35"},"nativeSrc":"11261:11:35","nodeType":"YulFunctionCall","src":"11261:11:35"},"variables":[{"name":"f","nativeSrc":"11256:1:35","nodeType":"YulTypedName","src":"11256:1:35","type":""}]},{"nativeSrc":"11289:30:35","nodeType":"YulAssignment","src":"11289:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"11301:5:35","nodeType":"YulIdentifier","src":"11301:5:35"},{"arguments":[{"kind":"number","nativeSrc":"11312:2:35","nodeType":"YulLiteral","src":"11312:2:35","type":"","value":"51"},{"name":"f","nativeSrc":"11316:1:35","nodeType":"YulIdentifier","src":"11316:1:35"}],"functionName":{"name":"shl","nativeSrc":"11308:3:35","nodeType":"YulIdentifier","src":"11308:3:35"},"nativeSrc":"11308:10:35","nodeType":"YulFunctionCall","src":"11308:10:35"}],"functionName":{"name":"or","nativeSrc":"11298:2:35","nodeType":"YulIdentifier","src":"11298:2:35"},"nativeSrc":"11298:21:35","nodeType":"YulFunctionCall","src":"11298:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"11289:5:35","nodeType":"YulIdentifier","src":"11289:5:35"}]},{"nativeSrc":"11336:14:35","nodeType":"YulAssignment","src":"11336:14:35","value":{"arguments":[{"name":"f","nativeSrc":"11345:1:35","nodeType":"YulIdentifier","src":"11345:1:35"},{"name":"r","nativeSrc":"11348:1:35","nodeType":"YulIdentifier","src":"11348:1:35"}],"functionName":{"name":"shr","nativeSrc":"11341:3:35","nodeType":"YulIdentifier","src":"11341:3:35"},"nativeSrc":"11341:9:35","nodeType":"YulFunctionCall","src":"11341:9:35"},"variableNames":[{"name":"r","nativeSrc":"11336:1:35","nodeType":"YulIdentifier","src":"11336:1:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"11289:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"11301:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11211:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11229:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11232:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11270:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11336:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11348:1:35","valueSize":1}],"flags":["memory-safe"],"id":6254,"nodeType":"InlineAssembly","src":"11168:196:35"},{"AST":{"nativeSrc":"11402:140:35","nodeType":"YulBlock","src":"11402:140:35","statements":[{"nativeSrc":"11420:24:35","nodeType":"YulAssignment","src":"11420:24:35","value":{"arguments":[{"kind":"number","nativeSrc":"11429:3:35","nodeType":"YulLiteral","src":"11429:3:35","type":"","value":"127"},{"arguments":[{"name":"r","nativeSrc":"11438:1:35","nodeType":"YulIdentifier","src":"11438:1:35"},{"name":"r","nativeSrc":"11441:1:35","nodeType":"YulIdentifier","src":"11441:1:35"}],"functionName":{"name":"mul","nativeSrc":"11434:3:35","nodeType":"YulIdentifier","src":"11434:3:35"},"nativeSrc":"11434:9:35","nodeType":"YulFunctionCall","src":"11434:9:35"}],"functionName":{"name":"shr","nativeSrc":"11425:3:35","nodeType":"YulIdentifier","src":"11425:3:35"},"nativeSrc":"11425:19:35","nodeType":"YulFunctionCall","src":"11425:19:35"},"variableNames":[{"name":"r","nativeSrc":"11420:1:35","nodeType":"YulIdentifier","src":"11420:1:35"}]},{"nativeSrc":"11461:20:35","nodeType":"YulVariableDeclaration","src":"11461:20:35","value":{"arguments":[{"kind":"number","nativeSrc":"11474:3:35","nodeType":"YulLiteral","src":"11474:3:35","type":"","value":"128"},{"name":"r","nativeSrc":"11479:1:35","nodeType":"YulIdentifier","src":"11479:1:35"}],"functionName":{"name":"shr","nativeSrc":"11470:3:35","nodeType":"YulIdentifier","src":"11470:3:35"},"nativeSrc":"11470:11:35","nodeType":"YulFunctionCall","src":"11470:11:35"},"variables":[{"name":"f","nativeSrc":"11465:1:35","nodeType":"YulTypedName","src":"11465:1:35","type":""}]},{"nativeSrc":"11498:30:35","nodeType":"YulAssignment","src":"11498:30:35","value":{"arguments":[{"name":"log_2","nativeSrc":"11510:5:35","nodeType":"YulIdentifier","src":"11510:5:35"},{"arguments":[{"kind":"number","nativeSrc":"11521:2:35","nodeType":"YulLiteral","src":"11521:2:35","type":"","value":"50"},{"name":"f","nativeSrc":"11525:1:35","nodeType":"YulIdentifier","src":"11525:1:35"}],"functionName":{"name":"shl","nativeSrc":"11517:3:35","nodeType":"YulIdentifier","src":"11517:3:35"},"nativeSrc":"11517:10:35","nodeType":"YulFunctionCall","src":"11517:10:35"}],"functionName":{"name":"or","nativeSrc":"11507:2:35","nodeType":"YulIdentifier","src":"11507:2:35"},"nativeSrc":"11507:21:35","nodeType":"YulFunctionCall","src":"11507:21:35"},"variableNames":[{"name":"log_2","nativeSrc":"11498:5:35","nodeType":"YulIdentifier","src":"11498:5:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6231,"isOffset":false,"isSlot":false,"src":"11498:5:35","valueSize":1},{"declaration":6231,"isOffset":false,"isSlot":false,"src":"11510:5:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11420:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11438:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11441:1:35","valueSize":1},{"declaration":6198,"isOffset":false,"isSlot":false,"src":"11479:1:35","valueSize":1}],"flags":["memory-safe"],"id":6255,"nodeType":"InlineAssembly","src":"11377:165:35"},{"assignments":[6257],"declarations":[{"constant":false,"id":6257,"mutability":"mutable","name":"log_sqrt10001","nameLocation":"11563:13:35","nodeType":"VariableDeclaration","scope":6302,"src":"11556:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6256,"name":"int256","nodeType":"ElementaryTypeName","src":"11556:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6261,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6258,"name":"log_2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"11579:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"323535373338393538393939363033383236333437313431","id":6259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11587:24:35","typeDescriptions":{"typeIdentifier":"t_rational_255738958999603826347141_by_1","typeString":"int_const 255738958999603826347141"},"value":"255738958999603826347141"},"src":"11579:32:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"11556:55:35"},{"assignments":[6263],"declarations":[{"constant":false,"id":6263,"mutability":"mutable","name":"tickLow","nameLocation":"11771:7:35","nodeType":"VariableDeclaration","scope":6302,"src":"11765:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6262,"name":"int24","nodeType":"ElementaryTypeName","src":"11765:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":6273,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6266,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6257,"src":"11788:13:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"33343032393932393536383039313332343138353936313430313030363630323437323130","id":6267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11804:37:35","typeDescriptions":{"typeIdentifier":"t_rational_3402992956809132418596140100660247210_by_1","typeString":"int_const 3402...(29 digits omitted)...7210"},"value":"3402992956809132418596140100660247210"},"src":"11788:53:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6269,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11787:55:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11787:62:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11781:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6264,"name":"int24","nodeType":"ElementaryTypeName","src":"11781:5:35","typeDescriptions":{}}},"id":6272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11781:69:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"11765:85:35"},{"assignments":[6275],"declarations":[{"constant":false,"id":6275,"mutability":"mutable","name":"tickHi","nameLocation":"12169:6:35","nodeType":"VariableDeclaration","scope":6302,"src":"12163:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6274,"name":"int24","nodeType":"ElementaryTypeName","src":"12163:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":6285,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6278,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6257,"src":"12185:13:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323931333339343634373731393839363232393037303237363231313533333938303838343935","id":6279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12201:39:35","typeDescriptions":{"typeIdentifier":"t_rational_291339464771989622907027621153398088495_by_1","typeString":"int_const 2913...(31 digits omitted)...8495"},"value":"291339464771989622907027621153398088495"},"src":"12185:55:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6281,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12184:57:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":6282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12245:3:35","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"12184:64:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12178:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6276,"name":"int24","nodeType":"ElementaryTypeName","src":"12178:5:35","typeDescriptions":{}}},"id":6284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12178:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"12163:86:35"},{"expression":{"id":6300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6286,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"12264:4:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6287,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"12271:7:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6288,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6275,"src":"12282:6:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"12271:17:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6292,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6275,"src":"12320:6:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":6291,"name":"getSqrtPriceAtTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6164,"src":"12301:18:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":6293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12301:26:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6294,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6167,"src":"12331:12:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"12301:42:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":6297,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"12355:7:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12301:61:35","trueExpression":{"id":6296,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6275,"src":"12346:6:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12271:91:35","trueExpression":{"id":6290,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"12291:7:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"12264:98:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6301,"nodeType":"ExpressionStatement","src":"12264:98:35"}]}]},"documentation":{"id":6165,"nodeType":"StructuredDocumentation","src":"7173:449:35","text":"@notice Calculates the greatest tick value such that getSqrtPriceAtTick(tick) <= sqrtPriceX96\n @dev Throws in case sqrtPriceX96 < MIN_SQRT_PRICE, as MIN_SQRT_PRICE is the lowest value getSqrtPriceAtTick may\n ever return.\n @param sqrtPriceX96 The sqrt price for which to compute the tick as a Q64.96\n @return tick The greatest tick for which the getSqrtPriceAtTick(tick) is less than or equal to the input sqrtPriceX96"},"id":6304,"implemented":true,"kind":"function","modifiers":[],"name":"getTickAtSqrtPrice","nameLocation":"7636:18:35","nodeType":"FunctionDefinition","parameters":{"id":6168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6167,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"7663:12:35","nodeType":"VariableDeclaration","scope":6304,"src":"7655:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6166,"name":"uint160","nodeType":"ElementaryTypeName","src":"7655:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7654:22:35"},"returnParameters":{"id":6171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6170,"mutability":"mutable","name":"tick","nameLocation":"7706:4:35","nodeType":"VariableDeclaration","scope":6304,"src":"7700:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6169,"name":"int24","nodeType":"ElementaryTypeName","src":"7700:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"7699:12:35"},"scope":6305,"src":"7627:4752:35","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6306,"src":"381:12000:35","usedErrors":[5766,5771],"usedEvents":[]}],"src":"32:12350:35"},"id":35},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/UnsafeMath.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/UnsafeMath.sol","exportedSymbols":{"UnsafeMath":[8628]},"id":8629,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8600,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:36"},{"abstract":false,"baseContracts":[],"canonicalName":"UnsafeMath","contractDependencies":[],"contractKind":"library","documentation":{"id":8601,"nodeType":"StructuredDocumentation","src":"57:173:36","text":"@title Math functions that do not check inputs or outputs\n @notice Contains methods that perform common math functions but do not do any overflow or underflow checks"},"fullyImplemented":true,"id":8628,"linearizedBaseContracts":[8628],"name":"UnsafeMath","nameLocation":"238:10:36","nodeType":"ContractDefinition","nodes":[{"body":{"id":8612,"nodeType":"Block","src":"548:102:36","statements":[{"AST":{"nativeSrc":"583:61:36","nodeType":"YulBlock","src":"583:61:36","statements":[{"nativeSrc":"597:37:36","nodeType":"YulAssignment","src":"597:37:36","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"610:1:36","nodeType":"YulIdentifier","src":"610:1:36"},{"name":"y","nativeSrc":"613:1:36","nodeType":"YulIdentifier","src":"613:1:36"}],"functionName":{"name":"div","nativeSrc":"606:3:36","nodeType":"YulIdentifier","src":"606:3:36"},"nativeSrc":"606:9:36","nodeType":"YulFunctionCall","src":"606:9:36"},{"arguments":[{"arguments":[{"name":"x","nativeSrc":"624:1:36","nodeType":"YulIdentifier","src":"624:1:36"},{"name":"y","nativeSrc":"627:1:36","nodeType":"YulIdentifier","src":"627:1:36"}],"functionName":{"name":"mod","nativeSrc":"620:3:36","nodeType":"YulIdentifier","src":"620:3:36"},"nativeSrc":"620:9:36","nodeType":"YulFunctionCall","src":"620:9:36"},{"kind":"number","nativeSrc":"631:1:36","nodeType":"YulLiteral","src":"631:1:36","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"617:2:36","nodeType":"YulIdentifier","src":"617:2:36"},"nativeSrc":"617:16:36","nodeType":"YulFunctionCall","src":"617:16:36"}],"functionName":{"name":"add","nativeSrc":"602:3:36","nodeType":"YulIdentifier","src":"602:3:36"},"nativeSrc":"602:32:36","nodeType":"YulFunctionCall","src":"602:32:36"},"variableNames":[{"name":"z","nativeSrc":"597:1:36","nodeType":"YulIdentifier","src":"597:1:36"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8604,"isOffset":false,"isSlot":false,"src":"610:1:36","valueSize":1},{"declaration":8604,"isOffset":false,"isSlot":false,"src":"624:1:36","valueSize":1},{"declaration":8606,"isOffset":false,"isSlot":false,"src":"613:1:36","valueSize":1},{"declaration":8606,"isOffset":false,"isSlot":false,"src":"627:1:36","valueSize":1},{"declaration":8609,"isOffset":false,"isSlot":false,"src":"597:1:36","valueSize":1}],"flags":["memory-safe"],"id":8611,"nodeType":"InlineAssembly","src":"558:86:36"}]},"documentation":{"id":8602,"nodeType":"StructuredDocumentation","src":"255:209:36","text":"@notice Returns ceil(x / y)\n @dev division by 0 will return 0, and should be checked externally\n @param x The dividend\n @param y The divisor\n @return z The quotient, ceil(x / y)"},"id":8613,"implemented":true,"kind":"function","modifiers":[],"name":"divRoundingUp","nameLocation":"478:13:36","nodeType":"FunctionDefinition","parameters":{"id":8607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8604,"mutability":"mutable","name":"x","nameLocation":"500:1:36","nodeType":"VariableDeclaration","scope":8613,"src":"492:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8603,"name":"uint256","nodeType":"ElementaryTypeName","src":"492:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8606,"mutability":"mutable","name":"y","nameLocation":"511:1:36","nodeType":"VariableDeclaration","scope":8613,"src":"503:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8605,"name":"uint256","nodeType":"ElementaryTypeName","src":"503:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"491:22:36"},"returnParameters":{"id":8610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8609,"mutability":"mutable","name":"z","nameLocation":"545:1:36","nodeType":"VariableDeclaration","scope":8613,"src":"537:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8608,"name":"uint256","nodeType":"ElementaryTypeName","src":"537:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"536:11:36"},"scope":8628,"src":"469:181:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8626,"nodeType":"Block","src":"1060:102:36","statements":[{"AST":{"nativeSrc":"1095:61:36","nodeType":"YulBlock","src":"1095:61:36","statements":[{"nativeSrc":"1109:37:36","nodeType":"YulAssignment","src":"1109:37:36","value":{"arguments":[{"arguments":[{"name":"a","nativeSrc":"1127:1:36","nodeType":"YulIdentifier","src":"1127:1:36"},{"name":"b","nativeSrc":"1130:1:36","nodeType":"YulIdentifier","src":"1130:1:36"}],"functionName":{"name":"mul","nativeSrc":"1123:3:36","nodeType":"YulIdentifier","src":"1123:3:36"},"nativeSrc":"1123:9:36","nodeType":"YulFunctionCall","src":"1123:9:36"},{"name":"denominator","nativeSrc":"1134:11:36","nodeType":"YulIdentifier","src":"1134:11:36"}],"functionName":{"name":"div","nativeSrc":"1119:3:36","nodeType":"YulIdentifier","src":"1119:3:36"},"nativeSrc":"1119:27:36","nodeType":"YulFunctionCall","src":"1119:27:36"},"variableNames":[{"name":"result","nativeSrc":"1109:6:36","nodeType":"YulIdentifier","src":"1109:6:36"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8616,"isOffset":false,"isSlot":false,"src":"1127:1:36","valueSize":1},{"declaration":8618,"isOffset":false,"isSlot":false,"src":"1130:1:36","valueSize":1},{"declaration":8620,"isOffset":false,"isSlot":false,"src":"1134:11:36","valueSize":1},{"declaration":8623,"isOffset":false,"isSlot":false,"src":"1109:6:36","valueSize":1}],"flags":["memory-safe"],"id":8625,"nodeType":"InlineAssembly","src":"1070:86:36"}]},"documentation":{"id":8614,"nodeType":"StructuredDocumentation","src":"656:295:36","text":"@notice Calculates floor(a\u00d7b\u00f7denominator)\n @dev division by 0 will return 0, and should be checked externally\n @param a The multiplicand\n @param b The multiplier\n @param denominator The divisor\n @return result The 256-bit result, floor(a\u00d7b\u00f7denominator)"},"id":8627,"implemented":true,"kind":"function","modifiers":[],"name":"simpleMulDiv","nameLocation":"965:12:36","nodeType":"FunctionDefinition","parameters":{"id":8621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8616,"mutability":"mutable","name":"a","nameLocation":"986:1:36","nodeType":"VariableDeclaration","scope":8627,"src":"978:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8615,"name":"uint256","nodeType":"ElementaryTypeName","src":"978:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8618,"mutability":"mutable","name":"b","nameLocation":"997:1:36","nodeType":"VariableDeclaration","scope":8627,"src":"989:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8617,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8620,"mutability":"mutable","name":"denominator","nameLocation":"1008:11:36","nodeType":"VariableDeclaration","scope":8627,"src":"1000:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8619,"name":"uint256","nodeType":"ElementaryTypeName","src":"1000:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"977:43:36"},"returnParameters":{"id":8624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8623,"mutability":"mutable","name":"result","nameLocation":"1052:6:36","nodeType":"VariableDeclaration","scope":8627,"src":"1044:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8622,"name":"uint256","nodeType":"ElementaryTypeName","src":"1044:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1043:16:36"},"scope":8628,"src":"956:206:36","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8629,"src":"230:934:36","usedErrors":[],"usedEvents":[]}],"src":"32:1133:36"},"id":36},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol","exportedSymbols":{"BalanceDelta":[6311],"BalanceDeltaLibrary":[6469],"SafeCast":[5751],"add":[6366],"eq":[6417],"neq":[6439],"sub":[6395],"toBalanceDelta":[6337]},"id":6470,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6307,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:37"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/SafeCast.sol","file":"../libraries/SafeCast.sol","id":6309,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6470,"sourceUnit":5752,"src":"57:51:37","symbolAliases":[{"foreign":{"id":6308,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"65:8:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"BalanceDelta","id":6311,"name":"BalanceDelta","nameLocation":"271:12:37","nodeType":"UserDefinedValueTypeDefinition","src":"266:28:37","underlyingType":{"id":6310,"name":"int256","nodeType":"ElementaryTypeName","src":"287:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"functionList":[{"definition":{"id":6312,"name":"add","nameLocations":["303:3:37"],"nodeType":"IdentifierPath","referencedDeclaration":6366,"src":"303:3:37"},"operator":"+"},{"definition":{"id":6313,"name":"sub","nameLocations":["313:3:37"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"313:3:37"},"operator":"-"},{"definition":{"id":6314,"name":"eq","nameLocations":["323:2:37"],"nodeType":"IdentifierPath","referencedDeclaration":6417,"src":"323:2:37"},"operator":"=="},{"definition":{"id":6315,"name":"neq","nameLocations":["333:3:37"],"nodeType":"IdentifierPath","referencedDeclaration":6439,"src":"333:3:37"},"operator":"!="}],"global":true,"id":6318,"nodeType":"UsingForDirective","src":"296:72:37","typeName":{"id":6317,"nodeType":"UserDefinedTypeName","pathNode":{"id":6316,"name":"BalanceDelta","nameLocations":["348:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"348:12:37"},"referencedDeclaration":6311,"src":"348:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}},{"global":true,"id":6322,"libraryName":{"id":6319,"name":"BalanceDeltaLibrary","nameLocations":["375:19:37"],"nodeType":"IdentifierPath","referencedDeclaration":6469,"src":"375:19:37"},"nodeType":"UsingForDirective","src":"369:50:37","typeName":{"id":6321,"nodeType":"UserDefinedTypeName","pathNode":{"id":6320,"name":"BalanceDelta","nameLocations":["399:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"399:12:37"},"referencedDeclaration":6311,"src":"399:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}},{"global":false,"id":6325,"libraryName":{"id":6323,"name":"SafeCast","nameLocations":["426:8:37"],"nodeType":"IdentifierPath","referencedDeclaration":5751,"src":"426:8:37"},"nodeType":"UsingForDirective","src":"420:26:37","typeName":{"id":6324,"name":"int256","nodeType":"ElementaryTypeName","src":"439:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"body":{"id":6336,"nodeType":"Block","src":"547:123:37","statements":[{"AST":{"nativeSrc":"578:90:37","nodeType":"YulBlock","src":"578:90:37","statements":[{"nativeSrc":"588:74:37","nodeType":"YulAssignment","src":"588:74:37","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"611:3:37","nodeType":"YulLiteral","src":"611:3:37","type":"","value":"128"},{"name":"_amount0","nativeSrc":"616:8:37","nodeType":"YulIdentifier","src":"616:8:37"}],"functionName":{"name":"shl","nativeSrc":"607:3:37","nodeType":"YulIdentifier","src":"607:3:37"},"nativeSrc":"607:18:37","nodeType":"YulFunctionCall","src":"607:18:37"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"639:3:37","nodeType":"YulLiteral","src":"639:3:37","type":"","value":"128"},{"kind":"number","nativeSrc":"644:1:37","nodeType":"YulLiteral","src":"644:1:37","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"635:3:37","nodeType":"YulIdentifier","src":"635:3:37"},"nativeSrc":"635:11:37","nodeType":"YulFunctionCall","src":"635:11:37"},{"kind":"number","nativeSrc":"648:1:37","nodeType":"YulLiteral","src":"648:1:37","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"631:3:37","nodeType":"YulIdentifier","src":"631:3:37"},"nativeSrc":"631:19:37","nodeType":"YulFunctionCall","src":"631:19:37"},{"name":"_amount1","nativeSrc":"652:8:37","nodeType":"YulIdentifier","src":"652:8:37"}],"functionName":{"name":"and","nativeSrc":"627:3:37","nodeType":"YulIdentifier","src":"627:3:37"},"nativeSrc":"627:34:37","nodeType":"YulFunctionCall","src":"627:34:37"}],"functionName":{"name":"or","nativeSrc":"604:2:37","nodeType":"YulIdentifier","src":"604:2:37"},"nativeSrc":"604:58:37","nodeType":"YulFunctionCall","src":"604:58:37"},"variableNames":[{"name":"balanceDelta","nativeSrc":"588:12:37","nodeType":"YulIdentifier","src":"588:12:37"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6327,"isOffset":false,"isSlot":false,"src":"616:8:37","valueSize":1},{"declaration":6329,"isOffset":false,"isSlot":false,"src":"652:8:37","valueSize":1},{"declaration":6333,"isOffset":false,"isSlot":false,"src":"588:12:37","valueSize":1}],"flags":["memory-safe"],"id":6335,"nodeType":"InlineAssembly","src":"553:115:37"}]},"id":6337,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"toBalanceDelta","nameLocation":"457:14:37","nodeType":"FunctionDefinition","parameters":{"id":6330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6327,"mutability":"mutable","name":"_amount0","nameLocation":"479:8:37","nodeType":"VariableDeclaration","scope":6337,"src":"472:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6326,"name":"int128","nodeType":"ElementaryTypeName","src":"472:6:37","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":6329,"mutability":"mutable","name":"_amount1","nameLocation":"496:8:37","nodeType":"VariableDeclaration","scope":6337,"src":"489:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6328,"name":"int128","nodeType":"ElementaryTypeName","src":"489:6:37","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"471:34:37"},"returnParameters":{"id":6334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6333,"mutability":"mutable","name":"balanceDelta","nameLocation":"533:12:37","nodeType":"VariableDeclaration","scope":6337,"src":"520:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6332,"nodeType":"UserDefinedTypeName","pathNode":{"id":6331,"name":"BalanceDelta","nameLocations":["520:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"520:12:37"},"referencedDeclaration":6311,"src":"520:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"519:27:37"},"scope":6470,"src":"448:222:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6365,"nodeType":"Block","src":"745:323:37","statements":[{"assignments":[6350],"declarations":[{"constant":false,"id":6350,"mutability":"mutable","name":"res0","nameLocation":"758:4:37","nodeType":"VariableDeclaration","scope":6365,"src":"751:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6349,"name":"int256","nodeType":"ElementaryTypeName","src":"751:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6351,"nodeType":"VariableDeclarationStatement","src":"751:11:37"},{"assignments":[6353],"declarations":[{"constant":false,"id":6353,"mutability":"mutable","name":"res1","nameLocation":"775:4:37","nodeType":"VariableDeclaration","scope":6365,"src":"768:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6352,"name":"int256","nodeType":"ElementaryTypeName","src":"768:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6354,"nodeType":"VariableDeclarationStatement","src":"768:11:37"},{"AST":{"nativeSrc":"810:195:37","nodeType":"YulBlock","src":"810:195:37","statements":[{"nativeSrc":"820:21:37","nodeType":"YulVariableDeclaration","src":"820:21:37","value":{"arguments":[{"kind":"number","nativeSrc":"834:3:37","nodeType":"YulLiteral","src":"834:3:37","type":"","value":"128"},{"name":"a","nativeSrc":"839:1:37","nodeType":"YulIdentifier","src":"839:1:37"}],"functionName":{"name":"sar","nativeSrc":"830:3:37","nodeType":"YulIdentifier","src":"830:3:37"},"nativeSrc":"830:11:37","nodeType":"YulFunctionCall","src":"830:11:37"},"variables":[{"name":"a0","nativeSrc":"824:2:37","nodeType":"YulTypedName","src":"824:2:37","type":""}]},{"nativeSrc":"850:27:37","nodeType":"YulVariableDeclaration","src":"850:27:37","value":{"arguments":[{"kind":"number","nativeSrc":"871:2:37","nodeType":"YulLiteral","src":"871:2:37","type":"","value":"15"},{"name":"a","nativeSrc":"875:1:37","nodeType":"YulIdentifier","src":"875:1:37"}],"functionName":{"name":"signextend","nativeSrc":"860:10:37","nodeType":"YulIdentifier","src":"860:10:37"},"nativeSrc":"860:17:37","nodeType":"YulFunctionCall","src":"860:17:37"},"variables":[{"name":"a1","nativeSrc":"854:2:37","nodeType":"YulTypedName","src":"854:2:37","type":""}]},{"nativeSrc":"886:21:37","nodeType":"YulVariableDeclaration","src":"886:21:37","value":{"arguments":[{"kind":"number","nativeSrc":"900:3:37","nodeType":"YulLiteral","src":"900:3:37","type":"","value":"128"},{"name":"b","nativeSrc":"905:1:37","nodeType":"YulIdentifier","src":"905:1:37"}],"functionName":{"name":"sar","nativeSrc":"896:3:37","nodeType":"YulIdentifier","src":"896:3:37"},"nativeSrc":"896:11:37","nodeType":"YulFunctionCall","src":"896:11:37"},"variables":[{"name":"b0","nativeSrc":"890:2:37","nodeType":"YulTypedName","src":"890:2:37","type":""}]},{"nativeSrc":"916:27:37","nodeType":"YulVariableDeclaration","src":"916:27:37","value":{"arguments":[{"kind":"number","nativeSrc":"937:2:37","nodeType":"YulLiteral","src":"937:2:37","type":"","value":"15"},{"name":"b","nativeSrc":"941:1:37","nodeType":"YulIdentifier","src":"941:1:37"}],"functionName":{"name":"signextend","nativeSrc":"926:10:37","nodeType":"YulIdentifier","src":"926:10:37"},"nativeSrc":"926:17:37","nodeType":"YulFunctionCall","src":"926:17:37"},"variables":[{"name":"b1","nativeSrc":"920:2:37","nodeType":"YulTypedName","src":"920:2:37","type":""}]},{"nativeSrc":"952:19:37","nodeType":"YulAssignment","src":"952:19:37","value":{"arguments":[{"name":"a0","nativeSrc":"964:2:37","nodeType":"YulIdentifier","src":"964:2:37"},{"name":"b0","nativeSrc":"968:2:37","nodeType":"YulIdentifier","src":"968:2:37"}],"functionName":{"name":"add","nativeSrc":"960:3:37","nodeType":"YulIdentifier","src":"960:3:37"},"nativeSrc":"960:11:37","nodeType":"YulFunctionCall","src":"960:11:37"},"variableNames":[{"name":"res0","nativeSrc":"952:4:37","nodeType":"YulIdentifier","src":"952:4:37"}]},{"nativeSrc":"980:19:37","nodeType":"YulAssignment","src":"980:19:37","value":{"arguments":[{"name":"a1","nativeSrc":"992:2:37","nodeType":"YulIdentifier","src":"992:2:37"},{"name":"b1","nativeSrc":"996:2:37","nodeType":"YulIdentifier","src":"996:2:37"}],"functionName":{"name":"add","nativeSrc":"988:3:37","nodeType":"YulIdentifier","src":"988:3:37"},"nativeSrc":"988:11:37","nodeType":"YulFunctionCall","src":"988:11:37"},"variableNames":[{"name":"res1","nativeSrc":"980:4:37","nodeType":"YulIdentifier","src":"980:4:37"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6340,"isOffset":false,"isSlot":false,"src":"839:1:37","valueSize":1},{"declaration":6340,"isOffset":false,"isSlot":false,"src":"875:1:37","valueSize":1},{"declaration":6343,"isOffset":false,"isSlot":false,"src":"905:1:37","valueSize":1},{"declaration":6343,"isOffset":false,"isSlot":false,"src":"941:1:37","valueSize":1},{"declaration":6350,"isOffset":false,"isSlot":false,"src":"952:4:37","valueSize":1},{"declaration":6353,"isOffset":false,"isSlot":false,"src":"980:4:37","valueSize":1}],"flags":["memory-safe"],"id":6355,"nodeType":"InlineAssembly","src":"785:220:37"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6357,"name":"res0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6350,"src":"1032:4:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1037:8:37","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"1032:13:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":6359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1032:15:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6360,"name":"res1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6353,"src":"1049:4:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1054:8:37","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"1049:13:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":6362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1049:15:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":6356,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"1017:14:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":6363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1017:48:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"functionReturnParameters":6348,"id":6364,"nodeType":"Return","src":"1010:55:37"}]},"id":6366,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"add","nameLocation":"681:3:37","nodeType":"FunctionDefinition","parameters":{"id":6344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6340,"mutability":"mutable","name":"a","nameLocation":"698:1:37","nodeType":"VariableDeclaration","scope":6366,"src":"685:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6339,"nodeType":"UserDefinedTypeName","pathNode":{"id":6338,"name":"BalanceDelta","nameLocations":["685:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"685:12:37"},"referencedDeclaration":6311,"src":"685:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":6343,"mutability":"mutable","name":"b","nameLocation":"714:1:37","nodeType":"VariableDeclaration","scope":6366,"src":"701:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6342,"nodeType":"UserDefinedTypeName","pathNode":{"id":6341,"name":"BalanceDelta","nameLocations":["701:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"701:12:37"},"referencedDeclaration":6311,"src":"701:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"684:32:37"},"returnParameters":{"id":6348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6366,"src":"731:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6346,"nodeType":"UserDefinedTypeName","pathNode":{"id":6345,"name":"BalanceDelta","nameLocations":["731:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"731:12:37"},"referencedDeclaration":6311,"src":"731:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"730:14:37"},"scope":6470,"src":"672:396:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6394,"nodeType":"Block","src":"1143:323:37","statements":[{"assignments":[6379],"declarations":[{"constant":false,"id":6379,"mutability":"mutable","name":"res0","nameLocation":"1156:4:37","nodeType":"VariableDeclaration","scope":6394,"src":"1149:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6378,"name":"int256","nodeType":"ElementaryTypeName","src":"1149:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6380,"nodeType":"VariableDeclarationStatement","src":"1149:11:37"},{"assignments":[6382],"declarations":[{"constant":false,"id":6382,"mutability":"mutable","name":"res1","nameLocation":"1173:4:37","nodeType":"VariableDeclaration","scope":6394,"src":"1166:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6381,"name":"int256","nodeType":"ElementaryTypeName","src":"1166:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6383,"nodeType":"VariableDeclarationStatement","src":"1166:11:37"},{"AST":{"nativeSrc":"1208:195:37","nodeType":"YulBlock","src":"1208:195:37","statements":[{"nativeSrc":"1218:21:37","nodeType":"YulVariableDeclaration","src":"1218:21:37","value":{"arguments":[{"kind":"number","nativeSrc":"1232:3:37","nodeType":"YulLiteral","src":"1232:3:37","type":"","value":"128"},{"name":"a","nativeSrc":"1237:1:37","nodeType":"YulIdentifier","src":"1237:1:37"}],"functionName":{"name":"sar","nativeSrc":"1228:3:37","nodeType":"YulIdentifier","src":"1228:3:37"},"nativeSrc":"1228:11:37","nodeType":"YulFunctionCall","src":"1228:11:37"},"variables":[{"name":"a0","nativeSrc":"1222:2:37","nodeType":"YulTypedName","src":"1222:2:37","type":""}]},{"nativeSrc":"1248:27:37","nodeType":"YulVariableDeclaration","src":"1248:27:37","value":{"arguments":[{"kind":"number","nativeSrc":"1269:2:37","nodeType":"YulLiteral","src":"1269:2:37","type":"","value":"15"},{"name":"a","nativeSrc":"1273:1:37","nodeType":"YulIdentifier","src":"1273:1:37"}],"functionName":{"name":"signextend","nativeSrc":"1258:10:37","nodeType":"YulIdentifier","src":"1258:10:37"},"nativeSrc":"1258:17:37","nodeType":"YulFunctionCall","src":"1258:17:37"},"variables":[{"name":"a1","nativeSrc":"1252:2:37","nodeType":"YulTypedName","src":"1252:2:37","type":""}]},{"nativeSrc":"1284:21:37","nodeType":"YulVariableDeclaration","src":"1284:21:37","value":{"arguments":[{"kind":"number","nativeSrc":"1298:3:37","nodeType":"YulLiteral","src":"1298:3:37","type":"","value":"128"},{"name":"b","nativeSrc":"1303:1:37","nodeType":"YulIdentifier","src":"1303:1:37"}],"functionName":{"name":"sar","nativeSrc":"1294:3:37","nodeType":"YulIdentifier","src":"1294:3:37"},"nativeSrc":"1294:11:37","nodeType":"YulFunctionCall","src":"1294:11:37"},"variables":[{"name":"b0","nativeSrc":"1288:2:37","nodeType":"YulTypedName","src":"1288:2:37","type":""}]},{"nativeSrc":"1314:27:37","nodeType":"YulVariableDeclaration","src":"1314:27:37","value":{"arguments":[{"kind":"number","nativeSrc":"1335:2:37","nodeType":"YulLiteral","src":"1335:2:37","type":"","value":"15"},{"name":"b","nativeSrc":"1339:1:37","nodeType":"YulIdentifier","src":"1339:1:37"}],"functionName":{"name":"signextend","nativeSrc":"1324:10:37","nodeType":"YulIdentifier","src":"1324:10:37"},"nativeSrc":"1324:17:37","nodeType":"YulFunctionCall","src":"1324:17:37"},"variables":[{"name":"b1","nativeSrc":"1318:2:37","nodeType":"YulTypedName","src":"1318:2:37","type":""}]},{"nativeSrc":"1350:19:37","nodeType":"YulAssignment","src":"1350:19:37","value":{"arguments":[{"name":"a0","nativeSrc":"1362:2:37","nodeType":"YulIdentifier","src":"1362:2:37"},{"name":"b0","nativeSrc":"1366:2:37","nodeType":"YulIdentifier","src":"1366:2:37"}],"functionName":{"name":"sub","nativeSrc":"1358:3:37","nodeType":"YulIdentifier","src":"1358:3:37"},"nativeSrc":"1358:11:37","nodeType":"YulFunctionCall","src":"1358:11:37"},"variableNames":[{"name":"res0","nativeSrc":"1350:4:37","nodeType":"YulIdentifier","src":"1350:4:37"}]},{"nativeSrc":"1378:19:37","nodeType":"YulAssignment","src":"1378:19:37","value":{"arguments":[{"name":"a1","nativeSrc":"1390:2:37","nodeType":"YulIdentifier","src":"1390:2:37"},{"name":"b1","nativeSrc":"1394:2:37","nodeType":"YulIdentifier","src":"1394:2:37"}],"functionName":{"name":"sub","nativeSrc":"1386:3:37","nodeType":"YulIdentifier","src":"1386:3:37"},"nativeSrc":"1386:11:37","nodeType":"YulFunctionCall","src":"1386:11:37"},"variableNames":[{"name":"res1","nativeSrc":"1378:4:37","nodeType":"YulIdentifier","src":"1378:4:37"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6369,"isOffset":false,"isSlot":false,"src":"1237:1:37","valueSize":1},{"declaration":6369,"isOffset":false,"isSlot":false,"src":"1273:1:37","valueSize":1},{"declaration":6372,"isOffset":false,"isSlot":false,"src":"1303:1:37","valueSize":1},{"declaration":6372,"isOffset":false,"isSlot":false,"src":"1339:1:37","valueSize":1},{"declaration":6379,"isOffset":false,"isSlot":false,"src":"1350:4:37","valueSize":1},{"declaration":6382,"isOffset":false,"isSlot":false,"src":"1378:4:37","valueSize":1}],"flags":["memory-safe"],"id":6384,"nodeType":"InlineAssembly","src":"1183:220:37"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6386,"name":"res0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"1430:4:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:8:37","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"1430:13:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":6388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1430:15:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6389,"name":"res1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6382,"src":"1447:4:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1452:8:37","memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"1447:13:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":6391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1447:15:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":6385,"name":"toBalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"1415:14:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int128,int128) pure returns (BalanceDelta)"}},"id":6392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1415:48:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"functionReturnParameters":6377,"id":6393,"nodeType":"Return","src":"1408:55:37"}]},"id":6395,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"sub","nameLocation":"1079:3:37","nodeType":"FunctionDefinition","parameters":{"id":6373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6369,"mutability":"mutable","name":"a","nameLocation":"1096:1:37","nodeType":"VariableDeclaration","scope":6395,"src":"1083:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6368,"nodeType":"UserDefinedTypeName","pathNode":{"id":6367,"name":"BalanceDelta","nameLocations":["1083:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1083:12:37"},"referencedDeclaration":6311,"src":"1083:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":6372,"mutability":"mutable","name":"b","nameLocation":"1112:1:37","nodeType":"VariableDeclaration","scope":6395,"src":"1099:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6371,"nodeType":"UserDefinedTypeName","pathNode":{"id":6370,"name":"BalanceDelta","nameLocations":["1099:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1099:12:37"},"referencedDeclaration":6311,"src":"1099:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"1082:32:37"},"returnParameters":{"id":6377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6395,"src":"1129:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6375,"nodeType":"UserDefinedTypeName","pathNode":{"id":6374,"name":"BalanceDelta","nameLocations":["1129:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1129:12:37"},"referencedDeclaration":6311,"src":"1129:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"1128:14:37"},"scope":6470,"src":"1070:396:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6416,"nodeType":"Block","src":"1532:64:37","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6408,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6398,"src":"1565:1:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}],"expression":{"id":6406,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1545:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"type(BalanceDelta)"}},"id":6407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1558:6:37","memberName":"unwrap","nodeType":"MemberAccess","src":"1545:19:37","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int256_$","typeString":"function (BalanceDelta) pure returns (int256)"}},"id":6409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1545:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6412,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"1591:1:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}],"expression":{"id":6410,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1571:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"type(BalanceDelta)"}},"id":6411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1584:6:37","memberName":"unwrap","nodeType":"MemberAccess","src":"1571:19:37","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int256_$","typeString":"function (BalanceDelta) pure returns (int256)"}},"id":6413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1571:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1545:48:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6405,"id":6415,"nodeType":"Return","src":"1538:55:37"}]},"id":6417,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"eq","nameLocation":"1477:2:37","nodeType":"FunctionDefinition","parameters":{"id":6402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6398,"mutability":"mutable","name":"a","nameLocation":"1493:1:37","nodeType":"VariableDeclaration","scope":6417,"src":"1480:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6397,"nodeType":"UserDefinedTypeName","pathNode":{"id":6396,"name":"BalanceDelta","nameLocations":["1480:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1480:12:37"},"referencedDeclaration":6311,"src":"1480:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":6401,"mutability":"mutable","name":"b","nameLocation":"1509:1:37","nodeType":"VariableDeclaration","scope":6417,"src":"1496:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6400,"nodeType":"UserDefinedTypeName","pathNode":{"id":6399,"name":"BalanceDelta","nameLocations":["1496:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1496:12:37"},"referencedDeclaration":6311,"src":"1496:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"1479:32:37"},"returnParameters":{"id":6405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6417,"src":"1526:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6403,"name":"bool","nodeType":"ElementaryTypeName","src":"1526:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1525:6:37"},"scope":6470,"src":"1468:128:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6438,"nodeType":"Block","src":"1663:64:37","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6430,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"1696:1:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}],"expression":{"id":6428,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1676:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"type(BalanceDelta)"}},"id":6429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1689:6:37","memberName":"unwrap","nodeType":"MemberAccess","src":"1676:19:37","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int256_$","typeString":"function (BalanceDelta) pure returns (int256)"}},"id":6431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":6434,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"1722:1:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}],"expression":{"id":6432,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1702:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"type(BalanceDelta)"}},"id":6433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1715:6:37","memberName":"unwrap","nodeType":"MemberAccess","src":"1702:19:37","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_BalanceDelta_$6311_$returns$_t_int256_$","typeString":"function (BalanceDelta) pure returns (int256)"}},"id":6435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1702:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1676:48:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6427,"id":6437,"nodeType":"Return","src":"1669:55:37"}]},"id":6439,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"neq","nameLocation":"1607:3:37","nodeType":"FunctionDefinition","parameters":{"id":6424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6420,"mutability":"mutable","name":"a","nameLocation":"1624:1:37","nodeType":"VariableDeclaration","scope":6439,"src":"1611:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6419,"nodeType":"UserDefinedTypeName","pathNode":{"id":6418,"name":"BalanceDelta","nameLocations":["1611:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1611:12:37"},"referencedDeclaration":6311,"src":"1611:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"},{"constant":false,"id":6423,"mutability":"mutable","name":"b","nameLocation":"1640:1:37","nodeType":"VariableDeclaration","scope":6439,"src":"1627:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6422,"nodeType":"UserDefinedTypeName","pathNode":{"id":6421,"name":"BalanceDelta","nameLocations":["1627:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1627:12:37"},"referencedDeclaration":6311,"src":"1627:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"1610:32:37"},"returnParameters":{"id":6427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6439,"src":"1657:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6425,"name":"bool","nodeType":"ElementaryTypeName","src":"1657:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1656:6:37"},"scope":6470,"src":"1598:129:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"canonicalName":"BalanceDeltaLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":6440,"nodeType":"StructuredDocumentation","src":"1729:90:37","text":"@notice Library for getting the amount0 and amount1 deltas from the BalanceDelta type"},"fullyImplemented":true,"id":6469,"linearizedBaseContracts":[6469],"name":"BalanceDeltaLibrary","nameLocation":"1827:19:37","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":6441,"nodeType":"StructuredDocumentation","src":"1853:31:37","text":"@notice A BalanceDelta of 0"},"functionSelector":"91cb4669","id":6448,"mutability":"constant","name":"ZERO_DELTA","nameLocation":"1918:10:37","nodeType":"VariableDeclaration","scope":6469,"src":"1889:62:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6443,"nodeType":"UserDefinedTypeName","pathNode":{"id":6442,"name":"BalanceDelta","nameLocations":["1889:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1889:12:37"},"referencedDeclaration":6311,"src":"1889:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"value":{"arguments":[{"hexValue":"30","id":6446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1949:1:37","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"}],"expression":{"id":6444,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1931:12:37","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"type(BalanceDelta)"}},"id":6445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1944:4:37","memberName":"wrap","nodeType":"MemberAccess","src":"1931:17:37","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_BalanceDelta_$6311_$","typeString":"function (int256) pure returns (BalanceDelta)"}},"id":6447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1931:20:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"public"},{"body":{"id":6457,"nodeType":"Block","src":"2042:99:37","statements":[{"AST":{"nativeSrc":"2077:58:37","nodeType":"YulBlock","src":"2077:58:37","statements":[{"nativeSrc":"2091:34:37","nodeType":"YulAssignment","src":"2091:34:37","value":{"arguments":[{"kind":"number","nativeSrc":"2107:3:37","nodeType":"YulLiteral","src":"2107:3:37","type":"","value":"128"},{"name":"balanceDelta","nativeSrc":"2112:12:37","nodeType":"YulIdentifier","src":"2112:12:37"}],"functionName":{"name":"sar","nativeSrc":"2103:3:37","nodeType":"YulIdentifier","src":"2103:3:37"},"nativeSrc":"2103:22:37","nodeType":"YulFunctionCall","src":"2103:22:37"},"variableNames":[{"name":"_amount0","nativeSrc":"2091:8:37","nodeType":"YulIdentifier","src":"2091:8:37"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6454,"isOffset":false,"isSlot":false,"src":"2091:8:37","valueSize":1},{"declaration":6451,"isOffset":false,"isSlot":false,"src":"2112:12:37","valueSize":1}],"flags":["memory-safe"],"id":6456,"nodeType":"InlineAssembly","src":"2052:83:37"}]},"id":6458,"implemented":true,"kind":"function","modifiers":[],"name":"amount0","nameLocation":"1967:7:37","nodeType":"FunctionDefinition","parameters":{"id":6452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6451,"mutability":"mutable","name":"balanceDelta","nameLocation":"1988:12:37","nodeType":"VariableDeclaration","scope":6458,"src":"1975:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6450,"nodeType":"UserDefinedTypeName","pathNode":{"id":6449,"name":"BalanceDelta","nameLocations":["1975:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"1975:12:37"},"referencedDeclaration":6311,"src":"1975:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"1974:27:37"},"returnParameters":{"id":6455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6454,"mutability":"mutable","name":"_amount0","nameLocation":"2032:8:37","nodeType":"VariableDeclaration","scope":6458,"src":"2025:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6453,"name":"int128","nodeType":"ElementaryTypeName","src":"2025:6:37","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"2024:17:37"},"scope":6469,"src":"1958:183:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6467,"nodeType":"Block","src":"2231:105:37","statements":[{"AST":{"nativeSrc":"2266:64:37","nodeType":"YulBlock","src":"2266:64:37","statements":[{"nativeSrc":"2280:40:37","nodeType":"YulAssignment","src":"2280:40:37","value":{"arguments":[{"kind":"number","nativeSrc":"2303:2:37","nodeType":"YulLiteral","src":"2303:2:37","type":"","value":"15"},{"name":"balanceDelta","nativeSrc":"2307:12:37","nodeType":"YulIdentifier","src":"2307:12:37"}],"functionName":{"name":"signextend","nativeSrc":"2292:10:37","nodeType":"YulIdentifier","src":"2292:10:37"},"nativeSrc":"2292:28:37","nodeType":"YulFunctionCall","src":"2292:28:37"},"variableNames":[{"name":"_amount1","nativeSrc":"2280:8:37","nodeType":"YulIdentifier","src":"2280:8:37"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6464,"isOffset":false,"isSlot":false,"src":"2280:8:37","valueSize":1},{"declaration":6461,"isOffset":false,"isSlot":false,"src":"2307:12:37","valueSize":1}],"flags":["memory-safe"],"id":6466,"nodeType":"InlineAssembly","src":"2241:89:37"}]},"id":6468,"implemented":true,"kind":"function","modifiers":[],"name":"amount1","nameLocation":"2156:7:37","nodeType":"FunctionDefinition","parameters":{"id":6462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6461,"mutability":"mutable","name":"balanceDelta","nameLocation":"2177:12:37","nodeType":"VariableDeclaration","scope":6468,"src":"2164:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"},"typeName":{"id":6460,"nodeType":"UserDefinedTypeName","pathNode":{"id":6459,"name":"BalanceDelta","nameLocations":["2164:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":6311,"src":"2164:12:37"},"referencedDeclaration":6311,"src":"2164:12:37","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BalanceDelta_$6311","typeString":"BalanceDelta"}},"visibility":"internal"}],"src":"2163:27:37"},"returnParameters":{"id":6465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6464,"mutability":"mutable","name":"_amount1","nameLocation":"2221:8:37","nodeType":"VariableDeclaration","scope":6468,"src":"2214:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6463,"name":"int128","nodeType":"ElementaryTypeName","src":"2214:6:37","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"2213:17:37"},"scope":6469,"src":"2147:189:37","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6470,"src":"1819:519:37","usedErrors":[],"usedEvents":[]}],"src":"32:2307:37"},"id":37},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BeforeSwapDelta.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BeforeSwapDelta.sol","exportedSymbols":{"BeforeSwapDelta":[6473],"BeforeSwapDeltaLibrary":[6517],"toBeforeSwapDelta":[6485]},"id":6518,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6471,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:38"},{"canonicalName":"BeforeSwapDelta","id":6473,"name":"BeforeSwapDelta","nameLocation":"229:15:38","nodeType":"UserDefinedValueTypeDefinition","src":"224:31:38","underlyingType":{"id":6472,"name":"int256","nodeType":"ElementaryTypeName","src":"248:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"body":{"id":6484,"nodeType":"Block","src":"447:140:38","statements":[{"AST":{"nativeSrc":"478:107:38","nodeType":"YulBlock","src":"478:107:38","statements":[{"nativeSrc":"488:91:38","nodeType":"YulAssignment","src":"488:91:38","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"514:3:38","nodeType":"YulLiteral","src":"514:3:38","type":"","value":"128"},{"name":"deltaSpecified","nativeSrc":"519:14:38","nodeType":"YulIdentifier","src":"519:14:38"}],"functionName":{"name":"shl","nativeSrc":"510:3:38","nodeType":"YulIdentifier","src":"510:3:38"},"nativeSrc":"510:24:38","nodeType":"YulFunctionCall","src":"510:24:38"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"548:3:38","nodeType":"YulLiteral","src":"548:3:38","type":"","value":"128"},{"kind":"number","nativeSrc":"553:1:38","nodeType":"YulLiteral","src":"553:1:38","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"544:3:38","nodeType":"YulIdentifier","src":"544:3:38"},"nativeSrc":"544:11:38","nodeType":"YulFunctionCall","src":"544:11:38"},{"kind":"number","nativeSrc":"557:1:38","nodeType":"YulLiteral","src":"557:1:38","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"540:3:38","nodeType":"YulIdentifier","src":"540:3:38"},"nativeSrc":"540:19:38","nodeType":"YulFunctionCall","src":"540:19:38"},{"name":"deltaUnspecified","nativeSrc":"561:16:38","nodeType":"YulIdentifier","src":"561:16:38"}],"functionName":{"name":"and","nativeSrc":"536:3:38","nodeType":"YulIdentifier","src":"536:3:38"},"nativeSrc":"536:42:38","nodeType":"YulFunctionCall","src":"536:42:38"}],"functionName":{"name":"or","nativeSrc":"507:2:38","nodeType":"YulIdentifier","src":"507:2:38"},"nativeSrc":"507:72:38","nodeType":"YulFunctionCall","src":"507:72:38"},"variableNames":[{"name":"beforeSwapDelta","nativeSrc":"488:15:38","nodeType":"YulIdentifier","src":"488:15:38"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6481,"isOffset":false,"isSlot":false,"src":"488:15:38","valueSize":1},{"declaration":6475,"isOffset":false,"isSlot":false,"src":"519:14:38","valueSize":1},{"declaration":6477,"isOffset":false,"isSlot":false,"src":"561:16:38","valueSize":1}],"flags":["memory-safe"],"id":6483,"nodeType":"InlineAssembly","src":"453:132:38"}]},"id":6485,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"toBeforeSwapDelta","nameLocation":"326:17:38","nodeType":"FunctionDefinition","parameters":{"id":6478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6475,"mutability":"mutable","name":"deltaSpecified","nameLocation":"351:14:38","nodeType":"VariableDeclaration","scope":6485,"src":"344:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6474,"name":"int128","nodeType":"ElementaryTypeName","src":"344:6:38","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":6477,"mutability":"mutable","name":"deltaUnspecified","nameLocation":"374:16:38","nodeType":"VariableDeclaration","scope":6485,"src":"367:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6476,"name":"int128","nodeType":"ElementaryTypeName","src":"367:6:38","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"343:48:38"},"returnParameters":{"id":6482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6481,"mutability":"mutable","name":"beforeSwapDelta","nameLocation":"430:15:38","nodeType":"VariableDeclaration","scope":6485,"src":"414:31:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":6480,"nodeType":"UserDefinedTypeName","pathNode":{"id":6479,"name":"BeforeSwapDelta","nameLocations":["414:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"414:15:38"},"referencedDeclaration":6473,"src":"414:15:38","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"internal"}],"src":"413:33:38"},"scope":6518,"src":"317:270:38","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"canonicalName":"BeforeSwapDeltaLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":6486,"nodeType":"StructuredDocumentation","src":"589:99:38","text":"@notice Library for getting the specified and unspecified deltas from the BeforeSwapDelta type"},"fullyImplemented":true,"id":6517,"linearizedBaseContracts":[6517],"name":"BeforeSwapDeltaLibrary","nameLocation":"696:22:38","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":6487,"nodeType":"StructuredDocumentation","src":"725:34:38","text":"@notice A BeforeSwapDelta of 0"},"functionSelector":"91cb4669","id":6494,"mutability":"constant","name":"ZERO_DELTA","nameLocation":"796:10:38","nodeType":"VariableDeclaration","scope":6517,"src":"764:68:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":6489,"nodeType":"UserDefinedTypeName","pathNode":{"id":6488,"name":"BeforeSwapDelta","nameLocations":["764:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"764:15:38"},"referencedDeclaration":6473,"src":"764:15:38","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"value":{"arguments":[{"hexValue":"30","id":6492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"830: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"}],"expression":{"id":6490,"name":"BeforeSwapDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"809:15:38","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$","typeString":"type(BeforeSwapDelta)"}},"id":6491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"825:4:38","memberName":"wrap","nodeType":"MemberAccess","src":"809:20:38","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_BeforeSwapDelta_$6473_$","typeString":"function (int256) pure returns (BeforeSwapDelta)"}},"id":6493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"809:23:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"public"},{"body":{"id":6504,"nodeType":"Block","src":"1037:98:38","statements":[{"AST":{"nativeSrc":"1072:57:38","nodeType":"YulBlock","src":"1072:57:38","statements":[{"nativeSrc":"1086:33:38","nodeType":"YulAssignment","src":"1086:33:38","value":{"arguments":[{"kind":"number","nativeSrc":"1108:3:38","nodeType":"YulLiteral","src":"1108:3:38","type":"","value":"128"},{"name":"delta","nativeSrc":"1113:5:38","nodeType":"YulIdentifier","src":"1113:5:38"}],"functionName":{"name":"sar","nativeSrc":"1104:3:38","nodeType":"YulIdentifier","src":"1104:3:38"},"nativeSrc":"1104:15:38","nodeType":"YulFunctionCall","src":"1104:15:38"},"variableNames":[{"name":"deltaSpecified","nativeSrc":"1086:14:38","nodeType":"YulIdentifier","src":"1086:14:38"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6498,"isOffset":false,"isSlot":false,"src":"1113:5:38","valueSize":1},{"declaration":6501,"isOffset":false,"isSlot":false,"src":"1086:14:38","valueSize":1}],"flags":["memory-safe"],"id":6503,"nodeType":"InlineAssembly","src":"1047:82:38"}]},"documentation":{"id":6495,"nodeType":"StructuredDocumentation","src":"839:97:38","text":"extracts int128 from the upper 128 bits of the BeforeSwapDelta\n returned by beforeSwap"},"id":6505,"implemented":true,"kind":"function","modifiers":[],"name":"getSpecifiedDelta","nameLocation":"950:17:38","nodeType":"FunctionDefinition","parameters":{"id":6499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6498,"mutability":"mutable","name":"delta","nameLocation":"984:5:38","nodeType":"VariableDeclaration","scope":6505,"src":"968:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":6497,"nodeType":"UserDefinedTypeName","pathNode":{"id":6496,"name":"BeforeSwapDelta","nameLocations":["968:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"968:15:38"},"referencedDeclaration":6473,"src":"968:15:38","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"internal"}],"src":"967:23:38"},"returnParameters":{"id":6502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6501,"mutability":"mutable","name":"deltaSpecified","nameLocation":"1021:14:38","nodeType":"VariableDeclaration","scope":6505,"src":"1014:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6500,"name":"int128","nodeType":"ElementaryTypeName","src":"1014:6:38","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1013:23:38"},"scope":6517,"src":"941:194:38","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6515,"nodeType":"Block","src":"1357:106:38","statements":[{"AST":{"nativeSrc":"1392:65:38","nodeType":"YulBlock","src":"1392:65:38","statements":[{"nativeSrc":"1406:41:38","nodeType":"YulAssignment","src":"1406:41:38","value":{"arguments":[{"kind":"number","nativeSrc":"1437:2:38","nodeType":"YulLiteral","src":"1437:2:38","type":"","value":"15"},{"name":"delta","nativeSrc":"1441:5:38","nodeType":"YulIdentifier","src":"1441:5:38"}],"functionName":{"name":"signextend","nativeSrc":"1426:10:38","nodeType":"YulIdentifier","src":"1426:10:38"},"nativeSrc":"1426:21:38","nodeType":"YulFunctionCall","src":"1426:21:38"},"variableNames":[{"name":"deltaUnspecified","nativeSrc":"1406:16:38","nodeType":"YulIdentifier","src":"1406:16:38"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6509,"isOffset":false,"isSlot":false,"src":"1441:5:38","valueSize":1},{"declaration":6512,"isOffset":false,"isSlot":false,"src":"1406:16:38","valueSize":1}],"flags":["memory-safe"],"id":6514,"nodeType":"InlineAssembly","src":"1367:90:38"}]},"documentation":{"id":6506,"nodeType":"StructuredDocumentation","src":"1141:111:38","text":"extracts int128 from the lower 128 bits of the BeforeSwapDelta\n returned by beforeSwap and afterSwap"},"id":6516,"implemented":true,"kind":"function","modifiers":[],"name":"getUnspecifiedDelta","nameLocation":"1266:19:38","nodeType":"FunctionDefinition","parameters":{"id":6510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6509,"mutability":"mutable","name":"delta","nameLocation":"1302:5:38","nodeType":"VariableDeclaration","scope":6516,"src":"1286:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"},"typeName":{"id":6508,"nodeType":"UserDefinedTypeName","pathNode":{"id":6507,"name":"BeforeSwapDelta","nameLocations":["1286:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"1286:15:38"},"referencedDeclaration":6473,"src":"1286:15:38","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BeforeSwapDelta_$6473","typeString":"BeforeSwapDelta"}},"visibility":"internal"}],"src":"1285:23:38"},"returnParameters":{"id":6513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6512,"mutability":"mutable","name":"deltaUnspecified","nameLocation":"1339:16:38","nodeType":"VariableDeclaration","scope":6516,"src":"1332:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6511,"name":"int128","nodeType":"ElementaryTypeName","src":"1332:6:38","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1331:25:38"},"scope":6517,"src":"1257:206:38","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6518,"src":"688:777:38","usedErrors":[],"usedEvents":[]}],"src":"32:1434:38"},"id":38},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","exportedSymbols":{"Currency":[6525],"CurrencyLibrary":[6819],"CustomRevert":[2358],"IERC20Minimal":[9021],"equals":[6558],"greaterThan":[6580],"greaterThanOrEqualTo":[6624],"lessThan":[6602]},"id":6820,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6519,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:39"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/external/IERC20Minimal.sol","file":"../interfaces/external/IERC20Minimal.sol","id":6521,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6820,"sourceUnit":9022,"src":"57:71:39","symbolAliases":[{"foreign":{"id":6520,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"65:13:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/libraries/CustomRevert.sol","file":"../libraries/CustomRevert.sol","id":6523,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6820,"sourceUnit":2359,"src":"129:59:39","symbolAliases":[{"foreign":{"id":6522,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"137:12:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"Currency","id":6525,"name":"Currency","nameLocation":"195:8:39","nodeType":"UserDefinedValueTypeDefinition","src":"190:25:39","underlyingType":{"id":6524,"name":"address","nodeType":"ElementaryTypeName","src":"207:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"functionList":[{"definition":{"id":6526,"name":"greaterThan","nameLocations":["224:11:39"],"nodeType":"IdentifierPath","referencedDeclaration":6580,"src":"224:11:39"},"operator":">"},{"definition":{"id":6527,"name":"lessThan","nameLocations":["242:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6602,"src":"242:8:39"},"operator":"<"},{"definition":{"id":6528,"name":"greaterThanOrEqualTo","nameLocations":["257:20:39"],"nodeType":"IdentifierPath","referencedDeclaration":6624,"src":"257:20:39"},"operator":">="},{"definition":{"id":6529,"name":"equals","nameLocations":["285:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":6558,"src":"285:6:39"},"operator":"=="}],"global":true,"id":6532,"nodeType":"UsingForDirective","src":"217:102:39","typeName":{"id":6531,"nodeType":"UserDefinedTypeName","pathNode":{"id":6530,"name":"Currency","nameLocations":["303:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"303:8:39"},"referencedDeclaration":6525,"src":"303:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}},{"global":true,"id":6536,"libraryName":{"id":6533,"name":"CurrencyLibrary","nameLocations":["326:15:39"],"nodeType":"IdentifierPath","referencedDeclaration":6819,"src":"326:15:39"},"nodeType":"UsingForDirective","src":"320:42:39","typeName":{"id":6535,"nodeType":"UserDefinedTypeName","pathNode":{"id":6534,"name":"Currency","nameLocations":["346:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"346:8:39"},"referencedDeclaration":6525,"src":"346:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}},{"body":{"id":6557,"nodeType":"Block","src":"435:67:39","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6549,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6539,"src":"464:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6547,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"448:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"457:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"448:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"448:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6553,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6542,"src":"493:5:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6551,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"477:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"486:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"477:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"477:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"448:51:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6546,"id":6556,"nodeType":"Return","src":"441:58:39"}]},"id":6558,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"equals","nameLocation":"373:6:39","nodeType":"FunctionDefinition","parameters":{"id":6543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6539,"mutability":"mutable","name":"currency","nameLocation":"389:8:39","nodeType":"VariableDeclaration","scope":6558,"src":"380:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6538,"nodeType":"UserDefinedTypeName","pathNode":{"id":6537,"name":"Currency","nameLocations":["380:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"380:8:39"},"referencedDeclaration":6525,"src":"380:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6542,"mutability":"mutable","name":"other","nameLocation":"408:5:39","nodeType":"VariableDeclaration","scope":6558,"src":"399:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6541,"nodeType":"UserDefinedTypeName","pathNode":{"id":6540,"name":"Currency","nameLocations":["399:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"399:8:39"},"referencedDeclaration":6525,"src":"399:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"379:35:39"},"returnParameters":{"id":6546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6558,"src":"429:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6544,"name":"bool","nodeType":"ElementaryTypeName","src":"429:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"428:6:39"},"scope":6820,"src":"364:138:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6579,"nodeType":"Block","src":"580:66:39","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6571,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6561,"src":"609:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6569,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"593:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"602:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"593:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"593:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":6575,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6564,"src":"637:5:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6573,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"621:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"630:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"621:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"621:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"593:50:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6568,"id":6578,"nodeType":"Return","src":"586:57:39"}]},"id":6580,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"greaterThan","nameLocation":"513:11:39","nodeType":"FunctionDefinition","parameters":{"id":6565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6561,"mutability":"mutable","name":"currency","nameLocation":"534:8:39","nodeType":"VariableDeclaration","scope":6580,"src":"525:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6560,"nodeType":"UserDefinedTypeName","pathNode":{"id":6559,"name":"Currency","nameLocations":["525:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"525:8:39"},"referencedDeclaration":6525,"src":"525:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6564,"mutability":"mutable","name":"other","nameLocation":"553:5:39","nodeType":"VariableDeclaration","scope":6580,"src":"544:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6563,"nodeType":"UserDefinedTypeName","pathNode":{"id":6562,"name":"Currency","nameLocations":["544:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"544:8:39"},"referencedDeclaration":6525,"src":"544:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"524:35:39"},"returnParameters":{"id":6568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6580,"src":"574:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6566,"name":"bool","nodeType":"ElementaryTypeName","src":"574:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"573:6:39"},"scope":6820,"src":"504:142:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6601,"nodeType":"Block","src":"721:66:39","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6593,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6583,"src":"750:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6591,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"734:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"743:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"734:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":6597,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6586,"src":"778:5:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6595,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"762:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"771:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"762:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"762:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"734:50:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6590,"id":6600,"nodeType":"Return","src":"727:57:39"}]},"id":6602,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"lessThan","nameLocation":"657:8:39","nodeType":"FunctionDefinition","parameters":{"id":6587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6583,"mutability":"mutable","name":"currency","nameLocation":"675:8:39","nodeType":"VariableDeclaration","scope":6602,"src":"666:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6582,"nodeType":"UserDefinedTypeName","pathNode":{"id":6581,"name":"Currency","nameLocations":["666:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"666:8:39"},"referencedDeclaration":6525,"src":"666:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6586,"mutability":"mutable","name":"other","nameLocation":"694:5:39","nodeType":"VariableDeclaration","scope":6602,"src":"685:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6585,"nodeType":"UserDefinedTypeName","pathNode":{"id":6584,"name":"Currency","nameLocations":["685:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"685:8:39"},"referencedDeclaration":6525,"src":"685:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"665:35:39"},"returnParameters":{"id":6590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6589,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6602,"src":"715:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6588,"name":"bool","nodeType":"ElementaryTypeName","src":"715:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"714:6:39"},"scope":6820,"src":"648:139:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6623,"nodeType":"Block","src":"874:67:39","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6615,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"903:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6613,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"887:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"896:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"887:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"887:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":6619,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"932:5:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6617,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"916:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"925:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"916:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"887:51:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6612,"id":6622,"nodeType":"Return","src":"880:58:39"}]},"id":6624,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"greaterThanOrEqualTo","nameLocation":"798:20:39","nodeType":"FunctionDefinition","parameters":{"id":6609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6605,"mutability":"mutable","name":"currency","nameLocation":"828:8:39","nodeType":"VariableDeclaration","scope":6624,"src":"819:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6604,"nodeType":"UserDefinedTypeName","pathNode":{"id":6603,"name":"Currency","nameLocations":["819:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"819:8:39"},"referencedDeclaration":6525,"src":"819:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6608,"mutability":"mutable","name":"other","nameLocation":"847:5:39","nodeType":"VariableDeclaration","scope":6624,"src":"838:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6607,"nodeType":"UserDefinedTypeName","pathNode":{"id":6606,"name":"Currency","nameLocations":["838:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"838:8:39"},"referencedDeclaration":6525,"src":"838:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"818:35:39"},"returnParameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6624,"src":"868:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6610,"name":"bool","nodeType":"ElementaryTypeName","src":"868:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"867:6:39"},"scope":6820,"src":"789:152:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"canonicalName":"CurrencyLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":6625,"nodeType":"StructuredDocumentation","src":"943:116:39","text":"@title CurrencyLibrary\n @dev This library allows for transferring and holding native tokens and ERC20 tokens"},"fullyImplemented":true,"id":6819,"linearizedBaseContracts":[6819],"name":"CurrencyLibrary","nameLocation":"1067:15:39","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6626,"nodeType":"StructuredDocumentation","src":"1089:86:39","text":"@notice Additional context for ERC-7751 wrapped error when a native transfer fails"},"errorSelector":"f4b3b1bc","id":6628,"name":"NativeTransferFailed","nameLocation":"1186:20:39","nodeType":"ErrorDefinition","parameters":{"id":6627,"nodeType":"ParameterList","parameters":[],"src":"1206:2:39"},"src":"1180:29:39"},{"documentation":{"id":6629,"nodeType":"StructuredDocumentation","src":"1215:86:39","text":"@notice Additional context for ERC-7751 wrapped error when an ERC20 transfer fails"},"errorSelector":"f27f64e4","id":6631,"name":"ERC20TransferFailed","nameLocation":"1312:19:39","nodeType":"ErrorDefinition","parameters":{"id":6630,"nodeType":"ParameterList","parameters":[],"src":"1331:2:39"},"src":"1306:28:39"},{"constant":true,"documentation":{"id":6632,"nodeType":"StructuredDocumentation","src":"1340:55:39","text":"@notice A constant to represent the native currency"},"functionSelector":"66e79509","id":6642,"mutability":"constant","name":"ADDRESS_ZERO","nameLocation":"1425:12:39","nodeType":"VariableDeclaration","scope":6819,"src":"1400:65:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6634,"nodeType":"UserDefinedTypeName","pathNode":{"id":6633,"name":"Currency","nameLocations":["1400:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"1400:8:39"},"referencedDeclaration":6525,"src":"1400:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"value":{"arguments":[{"arguments":[{"hexValue":"30","id":6639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1462:1:39","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":6638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1454:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6637,"name":"address","nodeType":"ElementaryTypeName","src":"1454:7:39","typeDescriptions":{}}},"id":6640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6635,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"1440:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1449:4:39","memberName":"wrap","nodeType":"MemberAccess","src":"1440:13:39","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_address_$returns$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (address) pure returns (Currency)"}},"id":6641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1440:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"public"},{"body":{"id":6697,"nodeType":"Block","src":"1546:2799:39","statements":[{"assignments":[6653],"declarations":[{"constant":false,"id":6653,"mutability":"mutable","name":"success","nameLocation":"1748:7:39","nodeType":"VariableDeclaration","scope":6697,"src":"1743:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6652,"name":"bool","nodeType":"ElementaryTypeName","src":"1743:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6654,"nodeType":"VariableDeclarationStatement","src":"1743:12:39"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6655,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"1769:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":6656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1778:13:39","memberName":"isAddressZero","nodeType":"MemberAccess","referencedDeclaration":6781,"src":"1769:22:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (bool)"}},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1769:24:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6695,"nodeType":"Block","src":"2224:2115:39","statements":[{"AST":{"nativeSrc":"2263:1749:39","nodeType":"YulBlock","src":"2263:1749:39","statements":[{"nativeSrc":"2335:22:39","nodeType":"YulVariableDeclaration","src":"2335:22:39","value":{"arguments":[{"kind":"number","nativeSrc":"2352:4:39","nodeType":"YulLiteral","src":"2352:4:39","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2346:5:39","nodeType":"YulIdentifier","src":"2346:5:39"},"nativeSrc":"2346:11:39","nodeType":"YulFunctionCall","src":"2346:11:39"},"variables":[{"name":"fmp","nativeSrc":"2339:3:39","nodeType":"YulTypedName","src":"2339:3:39","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"2483:3:39","nodeType":"YulIdentifier","src":"2483:3:39"},{"kind":"number","nativeSrc":"2488:66:39","nodeType":"YulLiteral","src":"2488:66:39","type":"","value":"0xa9059cbb00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"2476:6:39","nodeType":"YulIdentifier","src":"2476:6:39"},"nativeSrc":"2476:79:39","nodeType":"YulFunctionCall","src":"2476:79:39"},"nativeSrc":"2476:79:39","nodeType":"YulExpressionStatement","src":"2476:79:39"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2583:3:39","nodeType":"YulIdentifier","src":"2583:3:39"},{"kind":"number","nativeSrc":"2588:1:39","nodeType":"YulLiteral","src":"2588:1:39","type":"","value":"4"}],"functionName":{"name":"add","nativeSrc":"2579:3:39","nodeType":"YulIdentifier","src":"2579:3:39"},"nativeSrc":"2579:11:39","nodeType":"YulFunctionCall","src":"2579:11:39"},{"arguments":[{"name":"to","nativeSrc":"2596:2:39","nodeType":"YulIdentifier","src":"2596:2:39"},{"kind":"number","nativeSrc":"2600:42:39","nodeType":"YulLiteral","src":"2600:42:39","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"2592:3:39","nodeType":"YulIdentifier","src":"2592:3:39"},"nativeSrc":"2592:51:39","nodeType":"YulFunctionCall","src":"2592:51:39"}],"functionName":{"name":"mstore","nativeSrc":"2572:6:39","nodeType":"YulIdentifier","src":"2572:6:39"},"nativeSrc":"2572:72:39","nodeType":"YulFunctionCall","src":"2572:72:39"},"nativeSrc":"2572:72:39","nodeType":"YulExpressionStatement","src":"2572:72:39"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"2710:3:39","nodeType":"YulIdentifier","src":"2710:3:39"},{"kind":"number","nativeSrc":"2715:2:39","nodeType":"YulLiteral","src":"2715:2:39","type":"","value":"36"}],"functionName":{"name":"add","nativeSrc":"2706:3:39","nodeType":"YulIdentifier","src":"2706:3:39"},"nativeSrc":"2706:12:39","nodeType":"YulFunctionCall","src":"2706:12:39"},{"name":"amount","nativeSrc":"2720:6:39","nodeType":"YulIdentifier","src":"2720:6:39"}],"functionName":{"name":"mstore","nativeSrc":"2699:6:39","nodeType":"YulIdentifier","src":"2699:6:39"},"nativeSrc":"2699:28:39","nodeType":"YulFunctionCall","src":"2699:28:39"},"nativeSrc":"2699:28:39","nodeType":"YulExpressionStatement","src":"2699:28:39"},{"nativeSrc":"2828:846:39","nodeType":"YulAssignment","src":"2828:846:39","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3099:1:39","nodeType":"YulLiteral","src":"3099:1:39","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"3093:5:39","nodeType":"YulIdentifier","src":"3093:5:39"},"nativeSrc":"3093:8:39","nodeType":"YulFunctionCall","src":"3093:8:39"},{"kind":"number","nativeSrc":"3103:1:39","nodeType":"YulLiteral","src":"3103:1:39","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"3090:2:39","nodeType":"YulIdentifier","src":"3090:2:39"},"nativeSrc":"3090:15:39","nodeType":"YulFunctionCall","src":"3090:15:39"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"3110:14:39","nodeType":"YulIdentifier","src":"3110:14:39"},"nativeSrc":"3110:16:39","nodeType":"YulFunctionCall","src":"3110:16:39"},{"kind":"number","nativeSrc":"3128:2:39","nodeType":"YulLiteral","src":"3128:2:39","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3107:2:39","nodeType":"YulIdentifier","src":"3107:2:39"},"nativeSrc":"3107:24:39","nodeType":"YulFunctionCall","src":"3107:24:39"}],"functionName":{"name":"and","nativeSrc":"3086:3:39","nodeType":"YulIdentifier","src":"3086:3:39"},"nativeSrc":"3086:46:39","nodeType":"YulFunctionCall","src":"3086:46:39"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"3141:14:39","nodeType":"YulIdentifier","src":"3141:14:39"},"nativeSrc":"3141:16:39","nodeType":"YulFunctionCall","src":"3141:16:39"}],"functionName":{"name":"iszero","nativeSrc":"3134:6:39","nodeType":"YulIdentifier","src":"3134:6:39"},"nativeSrc":"3134:24:39","nodeType":"YulFunctionCall","src":"3134:24:39"}],"functionName":{"name":"or","nativeSrc":"3083:2:39","nodeType":"YulIdentifier","src":"3083:2:39"},"nativeSrc":"3083:76:39","nodeType":"YulFunctionCall","src":"3083:76:39"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3617:3:39","nodeType":"YulIdentifier","src":"3617:3:39"},"nativeSrc":"3617:5:39","nodeType":"YulFunctionCall","src":"3617:5:39"},{"name":"currency","nativeSrc":"3624:8:39","nodeType":"YulIdentifier","src":"3624:8:39"},{"kind":"number","nativeSrc":"3634:1:39","nodeType":"YulLiteral","src":"3634:1:39","type":"","value":"0"},{"name":"fmp","nativeSrc":"3637:3:39","nodeType":"YulIdentifier","src":"3637:3:39"},{"kind":"number","nativeSrc":"3642:2:39","nodeType":"YulLiteral","src":"3642:2:39","type":"","value":"68"},{"kind":"number","nativeSrc":"3646:1:39","nodeType":"YulLiteral","src":"3646:1:39","type":"","value":"0"},{"kind":"number","nativeSrc":"3649:2:39","nodeType":"YulLiteral","src":"3649:2:39","type":"","value":"32"}],"functionName":{"name":"call","nativeSrc":"3612:4:39","nodeType":"YulIdentifier","src":"3612:4:39"},"nativeSrc":"3612:40:39","nodeType":"YulFunctionCall","src":"3612:40:39"}],"functionName":{"name":"and","nativeSrc":"2859:3:39","nodeType":"YulIdentifier","src":"2859:3:39"},"nativeSrc":"2859:815:39","nodeType":"YulFunctionCall","src":"2859:815:39"},"variableNames":[{"name":"success","nativeSrc":"2828:7:39","nodeType":"YulIdentifier","src":"2828:7:39"}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"3747:3:39","nodeType":"YulIdentifier","src":"3747:3:39"},{"kind":"number","nativeSrc":"3752:1:39","nodeType":"YulLiteral","src":"3752:1:39","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3740:6:39","nodeType":"YulIdentifier","src":"3740:6:39"},"nativeSrc":"3740:14:39","nodeType":"YulFunctionCall","src":"3740:14:39"},"nativeSrc":"3740:14:39","nodeType":"YulExpressionStatement","src":"3740:14:39"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"3841:3:39","nodeType":"YulIdentifier","src":"3841:3:39"},{"kind":"number","nativeSrc":"3846:4:39","nodeType":"YulLiteral","src":"3846:4:39","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3837:3:39","nodeType":"YulIdentifier","src":"3837:3:39"},"nativeSrc":"3837:14:39","nodeType":"YulFunctionCall","src":"3837:14:39"},{"kind":"number","nativeSrc":"3853:1:39","nodeType":"YulLiteral","src":"3853:1:39","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3830:6:39","nodeType":"YulIdentifier","src":"3830:6:39"},"nativeSrc":"3830:25:39","nodeType":"YulFunctionCall","src":"3830:25:39"},"nativeSrc":"3830:25:39","nodeType":"YulExpressionStatement","src":"3830:25:39"},{"expression":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"3944:3:39","nodeType":"YulIdentifier","src":"3944:3:39"},{"kind":"number","nativeSrc":"3949:4:39","nodeType":"YulLiteral","src":"3949:4:39","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3940:3:39","nodeType":"YulIdentifier","src":"3940:3:39"},"nativeSrc":"3940:14:39","nodeType":"YulFunctionCall","src":"3940:14:39"},{"kind":"number","nativeSrc":"3956:1:39","nodeType":"YulLiteral","src":"3956:1:39","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3933:6:39","nodeType":"YulIdentifier","src":"3933:6:39"},"nativeSrc":"3933:25:39","nodeType":"YulFunctionCall","src":"3933:25:39"},"nativeSrc":"3933:25:39","nodeType":"YulExpressionStatement","src":"3933:25:39"}]},"evmVersion":"cancun","externalReferences":[{"declaration":6649,"isOffset":false,"isSlot":false,"src":"2720:6:39","valueSize":1},{"declaration":6645,"isOffset":false,"isSlot":false,"src":"3624:8:39","valueSize":1},{"declaration":6653,"isOffset":false,"isSlot":false,"src":"2828:7:39","valueSize":1},{"declaration":6647,"isOffset":false,"isSlot":false,"src":"2596:2:39","valueSize":1}],"flags":["memory-safe"],"id":6676,"nodeType":"InlineAssembly","src":"2238:1774:39"},{"condition":{"id":6678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4124:8:39","subExpression":{"id":6677,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6653,"src":"4125:7:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6694,"nodeType":"IfStatement","src":"4120:209:39","trueBody":{"id":6693,"nodeType":"Block","src":"4134:195:39","statements":[{"expression":{"arguments":[{"arguments":[{"id":6684,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"4224:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6682,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"4208:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4217:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"4208:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4208:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":6686,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"4235:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$9021_$","typeString":"type(contract IERC20Minimal)"}},"id":6687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4249:8:39","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8970,"src":"4235:22:39","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20Minimal.transfer(address,uint256) returns (bool)"}},"id":6688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4258:8:39","memberName":"selector","nodeType":"MemberAccess","src":"4235:31:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":6689,"name":"ERC20TransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"4268:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4288:8:39","memberName":"selector","nodeType":"MemberAccess","src":"4268:28:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":6679,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"4152:12:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CustomRevert_$2358_$","typeString":"type(library CustomRevert)"}},"id":6681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4165:21:39","memberName":"bubbleUpAndRevertWith","nodeType":"MemberAccess","referencedDeclaration":2357,"src":"4152:34:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$","typeString":"function (address,bytes4,bytes4) pure"}},"id":6691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4152:162:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6692,"nodeType":"ExpressionStatement","src":"4152:162:39"}]}}]},"id":6696,"nodeType":"IfStatement","src":"1765:2574:39","trueBody":{"id":6675,"nodeType":"Block","src":"1795:423:39","statements":[{"AST":{"nativeSrc":"1834:138:39","nodeType":"YulBlock","src":"1834:138:39","statements":[{"nativeSrc":"1912:46:39","nodeType":"YulAssignment","src":"1912:46:39","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1928:3:39","nodeType":"YulIdentifier","src":"1928:3:39"},"nativeSrc":"1928:5:39","nodeType":"YulFunctionCall","src":"1928:5:39"},{"name":"to","nativeSrc":"1935:2:39","nodeType":"YulIdentifier","src":"1935:2:39"},{"name":"amount","nativeSrc":"1939:6:39","nodeType":"YulIdentifier","src":"1939:6:39"},{"kind":"number","nativeSrc":"1947:1:39","nodeType":"YulLiteral","src":"1947:1:39","type":"","value":"0"},{"kind":"number","nativeSrc":"1950:1:39","nodeType":"YulLiteral","src":"1950:1:39","type":"","value":"0"},{"kind":"number","nativeSrc":"1953:1:39","nodeType":"YulLiteral","src":"1953:1:39","type":"","value":"0"},{"kind":"number","nativeSrc":"1956:1:39","nodeType":"YulLiteral","src":"1956:1:39","type":"","value":"0"}],"functionName":{"name":"call","nativeSrc":"1923:4:39","nodeType":"YulIdentifier","src":"1923:4:39"},"nativeSrc":"1923:35:39","nodeType":"YulFunctionCall","src":"1923:35:39"},"variableNames":[{"name":"success","nativeSrc":"1912:7:39","nodeType":"YulIdentifier","src":"1912:7:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6649,"isOffset":false,"isSlot":false,"src":"1939:6:39","valueSize":1},{"declaration":6653,"isOffset":false,"isSlot":false,"src":"1912:7:39","valueSize":1},{"declaration":6647,"isOffset":false,"isSlot":false,"src":"1935:2:39","valueSize":1}],"flags":["memory-safe"],"id":6658,"nodeType":"InlineAssembly","src":"1809:163:39"},{"condition":{"id":6660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2085:8:39","subExpression":{"id":6659,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6653,"src":"2086:7:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6674,"nodeType":"IfStatement","src":"2081:127:39","trueBody":{"id":6673,"nodeType":"Block","src":"2095:113:39","statements":[{"expression":{"arguments":[{"id":6664,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6647,"src":"2148:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2159:1:39","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":6666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2152:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":6665,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2152:6:39","typeDescriptions":{}}},"id":6668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2152:9:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":6669,"name":"NativeTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"2163:20:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2184:8:39","memberName":"selector","nodeType":"MemberAccess","src":"2163:29:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":6661,"name":"CustomRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"2113:12:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CustomRevert_$2358_$","typeString":"type(library CustomRevert)"}},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2126:21:39","memberName":"bubbleUpAndRevertWith","nodeType":"MemberAccess","referencedDeclaration":2357,"src":"2113:34:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$","typeString":"function (address,bytes4,bytes4) pure"}},"id":6671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2113:80:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6672,"nodeType":"ExpressionStatement","src":"2113:80:39"}]}}]}}]},"id":6698,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1481:8:39","nodeType":"FunctionDefinition","parameters":{"id":6650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6645,"mutability":"mutable","name":"currency","nameLocation":"1499:8:39","nodeType":"VariableDeclaration","scope":6698,"src":"1490:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6644,"nodeType":"UserDefinedTypeName","pathNode":{"id":6643,"name":"Currency","nameLocations":["1490:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"1490:8:39"},"referencedDeclaration":6525,"src":"1490:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6647,"mutability":"mutable","name":"to","nameLocation":"1517:2:39","nodeType":"VariableDeclaration","scope":6698,"src":"1509:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6646,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6649,"mutability":"mutable","name":"amount","nameLocation":"1529:6:39","nodeType":"VariableDeclaration","scope":6698,"src":"1521:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1521:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1489:47:39"},"returnParameters":{"id":6651,"nodeType":"ParameterList","parameters":[],"src":"1546:0:39"},"scope":6819,"src":"1472:2873:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6731,"nodeType":"Block","src":"4425:202:39","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6706,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6701,"src":"4439:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":6707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4448:13:39","memberName":"isAddressZero","nodeType":"MemberAccess","referencedDeclaration":6781,"src":"4439:22:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (bool)"}},"id":6708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4439:24:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6729,"nodeType":"Block","src":"4524:97:39","statements":[{"expression":{"arguments":[{"arguments":[{"id":6725,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4604:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_CurrencyLibrary_$6819","typeString":"library CurrencyLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CurrencyLibrary_$6819","typeString":"library CurrencyLibrary"}],"id":6724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4596:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6723,"name":"address","nodeType":"ElementaryTypeName","src":"4596:7:39","typeDescriptions":{}}},"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4596:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":6719,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6701,"src":"4575:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6717,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"4559:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4568:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"4559:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4559:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6716,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"4545:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$9021_$","typeString":"type(contract IERC20Minimal)"}},"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4545:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$9021","typeString":"contract IERC20Minimal"}},"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4586:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8960,"src":"4545:50:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":6727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4545:65:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6705,"id":6728,"nodeType":"Return","src":"4538:72:39"}]},"id":6730,"nodeType":"IfStatement","src":"4435:186:39","trueBody":{"id":6715,"nodeType":"Block","src":"4465:53:39","statements":[{"expression":{"expression":{"arguments":[{"id":6711,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4494:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_CurrencyLibrary_$6819","typeString":"library CurrencyLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CurrencyLibrary_$6819","typeString":"library CurrencyLibrary"}],"id":6710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4486:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6709,"name":"address","nodeType":"ElementaryTypeName","src":"4486:7:39","typeDescriptions":{}}},"id":6712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4486:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4500:7:39","memberName":"balance","nodeType":"MemberAccess","src":"4486:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6705,"id":6714,"nodeType":"Return","src":"4479:28:39"}]}}]},"id":6732,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOfSelf","nameLocation":"4360:13:39","nodeType":"FunctionDefinition","parameters":{"id":6702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6701,"mutability":"mutable","name":"currency","nameLocation":"4383:8:39","nodeType":"VariableDeclaration","scope":6732,"src":"4374:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6700,"nodeType":"UserDefinedTypeName","pathNode":{"id":6699,"name":"Currency","nameLocations":["4374:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"4374:8:39"},"referencedDeclaration":6525,"src":"4374:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"4373:19:39"},"returnParameters":{"id":6705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6732,"src":"4416:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6703,"name":"uint256","nodeType":"ElementaryTypeName","src":"4416:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4415:9:39"},"scope":6819,"src":"4351:276:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6761,"nodeType":"Block","src":"4718:186:39","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6742,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"4732:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"id":6743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4741:13:39","memberName":"isAddressZero","nodeType":"MemberAccess","referencedDeclaration":6781,"src":"4732:22:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (Currency) pure returns (bool)"}},"id":6744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4732:24:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6759,"nodeType":"Block","src":"4809:89:39","statements":[{"expression":{"arguments":[{"id":6756,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"4881:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":6752,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"4860:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6750,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"4844:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4853:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"4844:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6749,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"4830:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$9021_$","typeString":"type(contract IERC20Minimal)"}},"id":6754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4830:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$9021","typeString":"contract IERC20Minimal"}},"id":6755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4871:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8960,"src":"4830:50:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":6757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4830:57:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6741,"id":6758,"nodeType":"Return","src":"4823:64:39"}]},"id":6760,"nodeType":"IfStatement","src":"4728:170:39","trueBody":{"id":6748,"nodeType":"Block","src":"4758:45:39","statements":[{"expression":{"expression":{"id":6745,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"4779:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4785:7:39","memberName":"balance","nodeType":"MemberAccess","src":"4779:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6741,"id":6747,"nodeType":"Return","src":"4772:20:39"}]}}]},"id":6762,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4642:9:39","nodeType":"FunctionDefinition","parameters":{"id":6738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6735,"mutability":"mutable","name":"currency","nameLocation":"4661:8:39","nodeType":"VariableDeclaration","scope":6762,"src":"4652:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6734,"nodeType":"UserDefinedTypeName","pathNode":{"id":6733,"name":"Currency","nameLocations":["4652:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"4652:8:39"},"referencedDeclaration":6525,"src":"4652:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6737,"mutability":"mutable","name":"owner","nameLocation":"4679:5:39","nodeType":"VariableDeclaration","scope":6762,"src":"4671:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6736,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4651:34:39"},"returnParameters":{"id":6741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6762,"src":"4709:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6739,"name":"uint256","nodeType":"ElementaryTypeName","src":"4709:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4708:9:39"},"scope":6819,"src":"4633:271:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6780,"nodeType":"Block","src":"4981:82:39","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6772,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6765,"src":"5014:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6770,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"4998:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5007:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"4998:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4998:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6776,"name":"ADDRESS_ZERO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6642,"src":"5043:12:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6774,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"5027:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5036:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"5027:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5027:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4998:58:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6769,"id":6779,"nodeType":"Return","src":"4991:65:39"}]},"id":6781,"implemented":true,"kind":"function","modifiers":[],"name":"isAddressZero","nameLocation":"4919:13:39","nodeType":"FunctionDefinition","parameters":{"id":6766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6765,"mutability":"mutable","name":"currency","nameLocation":"4942:8:39","nodeType":"VariableDeclaration","scope":6781,"src":"4933:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6764,"nodeType":"UserDefinedTypeName","pathNode":{"id":6763,"name":"Currency","nameLocations":["4933:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"4933:8:39"},"referencedDeclaration":6525,"src":"4933:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"4932:19:39"},"returnParameters":{"id":6769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6768,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6781,"src":"4975:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6767,"name":"bool","nodeType":"ElementaryTypeName","src":"4975:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4974:6:39"},"scope":6819,"src":"4910:153:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6797,"nodeType":"Block","src":"5134:58:39","statements":[{"expression":{"arguments":[{"arguments":[{"id":6793,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"5175:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}],"expression":{"id":6791,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"5159:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5168:6:39","memberName":"unwrap","nodeType":"MemberAccess","src":"5159:15:39","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$6525_$returns$_t_address_$","typeString":"function (Currency) pure returns (address)"}},"id":6794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5159:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5151:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6789,"name":"uint160","nodeType":"ElementaryTypeName","src":"5151:7:39","typeDescriptions":{}}},"id":6795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5151:34:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":6788,"id":6796,"nodeType":"Return","src":"5144:41:39"}]},"id":6798,"implemented":true,"kind":"function","modifiers":[],"name":"toId","nameLocation":"5078:4:39","nodeType":"FunctionDefinition","parameters":{"id":6785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6784,"mutability":"mutable","name":"currency","nameLocation":"5092:8:39","nodeType":"VariableDeclaration","scope":6798,"src":"5083:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6783,"nodeType":"UserDefinedTypeName","pathNode":{"id":6782,"name":"Currency","nameLocations":["5083:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"5083:8:39"},"referencedDeclaration":6525,"src":"5083:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"5082:19:39"},"returnParameters":{"id":6788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6798,"src":"5125:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6786,"name":"uint256","nodeType":"ElementaryTypeName","src":"5125:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5124:9:39"},"scope":6819,"src":"5069:123:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6817,"nodeType":"Block","src":"5396:59:39","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":6812,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"5443:2:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5435:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6810,"name":"uint160","nodeType":"ElementaryTypeName","src":"5435:7:39","typeDescriptions":{}}},"id":6813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5435:11:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5427:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6808,"name":"address","nodeType":"ElementaryTypeName","src":"5427:7:39","typeDescriptions":{}}},"id":6814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5427:20:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6806,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"5413:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Currency_$6525_$","typeString":"type(Currency)"}},"id":6807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5422:4:39","memberName":"wrap","nodeType":"MemberAccess","src":"5413:13:39","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_address_$returns$_t_userDefinedValueType$_Currency_$6525_$","typeString":"function (address) pure returns (Currency)"}},"id":6815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5413:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"functionReturnParameters":6805,"id":6816,"nodeType":"Return","src":"5406:42:39"}]},"id":6818,"implemented":true,"kind":"function","modifiers":[],"name":"fromId","nameLocation":"5344:6:39","nodeType":"FunctionDefinition","parameters":{"id":6801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6800,"mutability":"mutable","name":"id","nameLocation":"5359:2:39","nodeType":"VariableDeclaration","scope":6818,"src":"5351:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6799,"name":"uint256","nodeType":"ElementaryTypeName","src":"5351:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5350:12:39"},"returnParameters":{"id":6805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6818,"src":"5386:8:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6803,"nodeType":"UserDefinedTypeName","pathNode":{"id":6802,"name":"Currency","nameLocations":["5386:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"5386:8:39"},"referencedDeclaration":6525,"src":"5386:8:39","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"}],"src":"5385:10:39"},"scope":6819,"src":"5335:120:39","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6820,"src":"1059:4398:39","usedErrors":[6628,6631],"usedEvents":[]}],"src":"32:5426:39"},"id":39},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol","exportedSymbols":{"PoolId":[6825],"PoolIdLibrary":[6839],"PoolKey":[6871]},"id":6840,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6821,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:40"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"./PoolKey.sol","id":6823,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6840,"sourceUnit":6872,"src":"57:38:40","symbolAliases":[{"foreign":{"id":6822,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"65:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"PoolId","id":6825,"name":"PoolId","nameLocation":"102:6:40","nodeType":"UserDefinedValueTypeDefinition","src":"97:23:40","underlyingType":{"id":6824,"name":"bytes32","nodeType":"ElementaryTypeName","src":"112:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"abstract":false,"baseContracts":[],"canonicalName":"PoolIdLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":6826,"nodeType":"StructuredDocumentation","src":"122:51:40","text":"@notice Library for computing the ID of a pool"},"fullyImplemented":true,"id":6839,"linearizedBaseContracts":[6839],"name":"PoolIdLibrary","nameLocation":"181:13:40","nodeType":"ContractDefinition","nodes":[{"body":{"id":6837,"nodeType":"Block","src":"347:189:40","statements":[{"AST":{"nativeSrc":"382:148:40","nodeType":"YulBlock","src":"382:148:40","statements":[{"nativeSrc":"486:34:40","nodeType":"YulAssignment","src":"486:34:40","value":{"arguments":[{"name":"poolKey","nativeSrc":"506:7:40","nodeType":"YulIdentifier","src":"506:7:40"},{"kind":"number","nativeSrc":"515:4:40","nodeType":"YulLiteral","src":"515:4:40","type":"","value":"0xa0"}],"functionName":{"name":"keccak256","nativeSrc":"496:9:40","nodeType":"YulIdentifier","src":"496:9:40"},"nativeSrc":"496:24:40","nodeType":"YulFunctionCall","src":"496:24:40"},"variableNames":[{"name":"poolId","nativeSrc":"486:6:40","nodeType":"YulIdentifier","src":"486:6:40"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6834,"isOffset":false,"isSlot":false,"src":"486:6:40","valueSize":1},{"declaration":6830,"isOffset":false,"isSlot":false,"src":"506:7:40","valueSize":1}],"flags":["memory-safe"],"id":6836,"nodeType":"InlineAssembly","src":"357:173:40"}]},"documentation":{"id":6827,"nodeType":"StructuredDocumentation","src":"201:65:40","text":"@notice Returns value equal to keccak256(abi.encode(poolKey))"},"id":6838,"implemented":true,"kind":"function","modifiers":[],"name":"toId","nameLocation":"280:4:40","nodeType":"FunctionDefinition","parameters":{"id":6831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6830,"mutability":"mutable","name":"poolKey","nameLocation":"300:7:40","nodeType":"VariableDeclaration","scope":6838,"src":"285:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_memory_ptr","typeString":"struct PoolKey"},"typeName":{"id":6829,"nodeType":"UserDefinedTypeName","pathNode":{"id":6828,"name":"PoolKey","nameLocations":["285:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"285:7:40"},"referencedDeclaration":6871,"src":"285:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}},"visibility":"internal"}],"src":"284:24:40"},"returnParameters":{"id":6835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6834,"mutability":"mutable","name":"poolId","nameLocation":"339:6:40","nodeType":"VariableDeclaration","scope":6838,"src":"332:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"},"typeName":{"id":6833,"nodeType":"UserDefinedTypeName","pathNode":{"id":6832,"name":"PoolId","nameLocations":["332:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":6825,"src":"332:6:40"},"referencedDeclaration":6825,"src":"332:6:40","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolId_$6825","typeString":"PoolId"}},"visibility":"internal"}],"src":"331:15:40"},"scope":6839,"src":"271:265:40","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6840,"src":"173:365:40","usedErrors":[],"usedEvents":[]}],"src":"32:507:40"},"id":40},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","exportedSymbols":{"Currency":[6525],"IHooks":[1840],"PoolIdLibrary":[6839],"PoolKey":[6871]},"id":6872,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6841,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:41"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Currency.sol","file":"./Currency.sol","id":6843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6872,"sourceUnit":6820,"src":"57:40:41","symbolAliases":[{"foreign":{"id":6842,"name":"Currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"65:8:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/interfaces/IHooks.sol","file":"../interfaces/IHooks.sol","id":6845,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6872,"sourceUnit":1841,"src":"98:48:41","symbolAliases":[{"foreign":{"id":6844,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"106:6:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolId.sol","file":"./PoolId.sol","id":6847,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6872,"sourceUnit":6840,"src":"147:43:41","symbolAliases":[{"foreign":{"id":6846,"name":"PoolIdLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6839,"src":"155:13:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"global":true,"id":6851,"libraryName":{"id":6848,"name":"PoolIdLibrary","nameLocations":["198:13:41"],"nodeType":"IdentifierPath","referencedDeclaration":6839,"src":"198:13:41"},"nodeType":"UsingForDirective","src":"192:39:41","typeName":{"id":6850,"nodeType":"UserDefinedTypeName","pathNode":{"id":6849,"name":"PoolKey","nameLocations":["216:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":6871,"src":"216:7:41"},"referencedDeclaration":6871,"src":"216:7:41","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$6871_storage_ptr","typeString":"struct PoolKey"}}},{"canonicalName":"PoolKey","documentation":{"id":6852,"nodeType":"StructuredDocumentation","src":"233:51:41","text":"@notice Returns the key for identifying a pool"},"id":6871,"members":[{"constant":false,"id":6856,"mutability":"mutable","name":"currency0","nameLocation":"381:9:41","nodeType":"VariableDeclaration","scope":6871,"src":"372:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6855,"nodeType":"UserDefinedTypeName","pathNode":{"id":6854,"name":"Currency","nameLocations":["372:8:41"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"372:8:41"},"referencedDeclaration":6525,"src":"372:8:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6860,"mutability":"mutable","name":"currency1","nameLocation":"473:9:41","nodeType":"VariableDeclaration","scope":6871,"src":"464:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"},"typeName":{"id":6859,"nodeType":"UserDefinedTypeName","pathNode":{"id":6858,"name":"Currency","nameLocations":["464:8:41"],"nodeType":"IdentifierPath","referencedDeclaration":6525,"src":"464:8:41"},"referencedDeclaration":6525,"src":"464:8:41","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Currency_$6525","typeString":"Currency"}},"visibility":"internal"},{"constant":false,"id":6863,"mutability":"mutable","name":"fee","nameLocation":"639:3:41","nodeType":"VariableDeclaration","scope":6871,"src":"632:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6862,"name":"uint24","nodeType":"ElementaryTypeName","src":"632:6:41","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":6866,"mutability":"mutable","name":"tickSpacing","nameLocation":"734:11:41","nodeType":"VariableDeclaration","scope":6871,"src":"728:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6865,"name":"int24","nodeType":"ElementaryTypeName","src":"728:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6870,"mutability":"mutable","name":"hooks","nameLocation":"796:5:41","nodeType":"VariableDeclaration","scope":6871,"src":"789:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"},"typeName":{"id":6869,"nodeType":"UserDefinedTypeName","pathNode":{"id":6868,"name":"IHooks","nameLocations":["789:6:41"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"789:6:41"},"referencedDeclaration":1840,"src":"789:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1840","typeString":"contract IHooks"}},"visibility":"internal"}],"name":"PoolKey","nameLocation":"291:7:41","nodeType":"StructDefinition","scope":6872,"src":"284:520:41","visibility":"public"}],"src":"32:773:41"},"id":41},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolOperation.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolOperation.sol","exportedSymbols":{"BalanceDelta":[6311],"ModifyLiquidityParams":[6887],"PoolKey":[6871],"SwapParams":[6898]},"id":6899,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6873,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:42"},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/PoolKey.sol","file":"../types/PoolKey.sol","id":6875,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6899,"sourceUnit":6872,"src":"58:45:42","symbolAliases":[{"foreign":{"id":6874,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"66:7:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/BalanceDelta.sol","file":"../types/BalanceDelta.sol","id":6877,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6899,"sourceUnit":6470,"src":"104:55:42","symbolAliases":[{"foreign":{"id":6876,"name":"BalanceDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"112:12:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"ModifyLiquidityParams","documentation":{"id":6878,"nodeType":"StructuredDocumentation","src":"161:67:42","text":"@notice Parameter struct for `ModifyLiquidity` pool operations"},"id":6887,"members":[{"constant":false,"id":6880,"mutability":"mutable","name":"tickLower","nameLocation":"317:9:42","nodeType":"VariableDeclaration","scope":6887,"src":"311:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6879,"name":"int24","nodeType":"ElementaryTypeName","src":"311:5:42","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6882,"mutability":"mutable","name":"tickUpper","nameLocation":"338:9:42","nodeType":"VariableDeclaration","scope":6887,"src":"332:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6881,"name":"int24","nodeType":"ElementaryTypeName","src":"332:5:42","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6884,"mutability":"mutable","name":"liquidityDelta","nameLocation":"395:14:42","nodeType":"VariableDeclaration","scope":6887,"src":"388:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6883,"name":"int256","nodeType":"ElementaryTypeName","src":"388:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6886,"mutability":"mutable","name":"salt","nameLocation":"502:4:42","nodeType":"VariableDeclaration","scope":6887,"src":"494:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6885,"name":"bytes32","nodeType":"ElementaryTypeName","src":"494:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"ModifyLiquidityParams","nameLocation":"235:21:42","nodeType":"StructDefinition","scope":6899,"src":"228:281:42","visibility":"public"},{"canonicalName":"SwapParams","documentation":{"id":6888,"nodeType":"StructuredDocumentation","src":"511:56:42","text":"@notice Parameter struct for `Swap` pool operations"},"id":6898,"members":[{"constant":false,"id":6891,"mutability":"mutable","name":"zeroForOne","nameLocation":"652:10:42","nodeType":"VariableDeclaration","scope":6898,"src":"647:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6890,"name":"bool","nodeType":"ElementaryTypeName","src":"647:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6894,"mutability":"mutable","name":"amountSpecified","nameLocation":"783:15:42","nodeType":"VariableDeclaration","scope":6898,"src":"776:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6893,"name":"int256","nodeType":"ElementaryTypeName","src":"776:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6897,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"886:17:42","nodeType":"VariableDeclaration","scope":6898,"src":"878:25:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6896,"name":"uint160","nodeType":"ElementaryTypeName","src":"878:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"SwapParams","nameLocation":"574:10:42","nodeType":"StructDefinition","scope":6899,"src":"567:339:42","visibility":"public"}],"src":"32:875:42"},"id":42},"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Slot0.sol":{"ast":{"absolutePath":"/Users/meek/developer/mmsaki/solidity-language-server/v4-core/src/types/Slot0.sol","exportedSymbols":{"Slot0":[8632],"Slot0Library":[8745]},"id":8746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8630,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:43"},{"canonicalName":"Slot0","id":8632,"name":"Slot0","nameLocation":"932:5:43","nodeType":"UserDefinedValueTypeDefinition","src":"927:22:43","underlyingType":{"id":8631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"941:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":true,"id":8636,"libraryName":{"id":8633,"name":"Slot0Library","nameLocations":["957:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8745,"src":"957:12:43"},"nodeType":"UsingForDirective","src":"951:36:43","typeName":{"id":8635,"nodeType":"UserDefinedTypeName","pathNode":{"id":8634,"name":"Slot0","nameLocations":["974:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"974:5:43"},"referencedDeclaration":8632,"src":"974:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}}},{"abstract":false,"baseContracts":[],"canonicalName":"Slot0Library","contractDependencies":[],"contractKind":"library","documentation":{"id":8637,"nodeType":"StructuredDocumentation","src":"989:69:43","text":"@notice Library for getting and setting values in the Slot0 type"},"fullyImplemented":true,"id":8745,"linearizedBaseContracts":[8745],"name":"Slot0Library","nameLocation":"1066:12:43","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":8640,"mutability":"constant","name":"MASK_160_BITS","nameLocation":"1111:13:43","nodeType":"VariableDeclaration","scope":8745,"src":"1085:86:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8638,"name":"uint160","nodeType":"ElementaryTypeName","src":"1085:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"3078303046464646464646464646464646464646464646464646464646464646464646464646464646464646","id":8639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1127:44:43","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542975_by_1","typeString":"int_const 1461...(41 digits omitted)...2975"},"value":"0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":8643,"mutability":"constant","name":"MASK_24_BITS","nameLocation":"1202:12:43","nodeType":"VariableDeclaration","scope":8745,"src":"1177:48:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8641,"name":"uint24","nodeType":"ElementaryTypeName","src":"1177:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"value":{"hexValue":"3078464646464646","id":8642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1217:8:43","typeDescriptions":{"typeIdentifier":"t_rational_16777215_by_1","typeString":"int_const 16777215"},"value":"0xFFFFFF"},"visibility":"internal"},{"constant":true,"id":8646,"mutability":"constant","name":"TICK_OFFSET","nameLocation":"1256:11:43","nodeType":"VariableDeclaration","scope":8745,"src":"1232:41:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8644,"name":"uint8","nodeType":"ElementaryTypeName","src":"1232:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"313630","id":8645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1270:3:43","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},"visibility":"internal"},{"constant":true,"id":8649,"mutability":"constant","name":"PROTOCOL_FEE_OFFSET","nameLocation":"1303:19:43","nodeType":"VariableDeclaration","scope":8745,"src":"1279:49:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8647,"name":"uint8","nodeType":"ElementaryTypeName","src":"1279:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"313834","id":8648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:3:43","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},"visibility":"internal"},{"constant":true,"id":8652,"mutability":"constant","name":"LP_FEE_OFFSET","nameLocation":"1358:13:43","nodeType":"VariableDeclaration","scope":8745,"src":"1334:43:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8650,"name":"uint8","nodeType":"ElementaryTypeName","src":"1334:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"323038","id":8651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1374:3:43","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},"visibility":"internal"},{"body":{"id":8661,"nodeType":"Block","src":"1492:109:43","statements":[{"AST":{"nativeSrc":"1527:68:43","nodeType":"YulBlock","src":"1527:68:43","statements":[{"nativeSrc":"1541:44:43","nodeType":"YulAssignment","src":"1541:44:43","value":{"arguments":[{"name":"MASK_160_BITS","nativeSrc":"1562:13:43","nodeType":"YulIdentifier","src":"1562:13:43"},{"name":"_packed","nativeSrc":"1577:7:43","nodeType":"YulIdentifier","src":"1577:7:43"}],"functionName":{"name":"and","nativeSrc":"1558:3:43","nodeType":"YulIdentifier","src":"1558:3:43"},"nativeSrc":"1558:27:43","nodeType":"YulFunctionCall","src":"1558:27:43"},"variableNames":[{"name":"_sqrtPriceX96","nativeSrc":"1541:13:43","nodeType":"YulIdentifier","src":"1541:13:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8640,"isOffset":false,"isSlot":false,"src":"1562:13:43","valueSize":1},{"declaration":8655,"isOffset":false,"isSlot":false,"src":"1577:7:43","valueSize":1},{"declaration":8658,"isOffset":false,"isSlot":false,"src":"1541:13:43","valueSize":1}],"flags":["memory-safe"],"id":8660,"nodeType":"InlineAssembly","src":"1502:93:43"}]},"id":8662,"implemented":true,"kind":"function","modifiers":[],"name":"sqrtPriceX96","nameLocation":"1418:12:43","nodeType":"FunctionDefinition","parameters":{"id":8656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8655,"mutability":"mutable","name":"_packed","nameLocation":"1437:7:43","nodeType":"VariableDeclaration","scope":8662,"src":"1431:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8654,"nodeType":"UserDefinedTypeName","pathNode":{"id":8653,"name":"Slot0","nameLocations":["1431:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"1431:5:43"},"referencedDeclaration":8632,"src":"1431:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"1430:15:43"},"returnParameters":{"id":8659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8658,"mutability":"mutable","name":"_sqrtPriceX96","nameLocation":"1477:13:43","nodeType":"VariableDeclaration","scope":8662,"src":"1469:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8657,"name":"uint160","nodeType":"ElementaryTypeName","src":"1469:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1468:23:43"},"scope":8745,"src":"1409:192:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8671,"nodeType":"Block","src":"1672:114:43","statements":[{"AST":{"nativeSrc":"1707:73:43","nodeType":"YulBlock","src":"1707:73:43","statements":[{"nativeSrc":"1721:49:43","nodeType":"YulAssignment","src":"1721:49:43","value":{"arguments":[{"kind":"number","nativeSrc":"1741:1:43","nodeType":"YulLiteral","src":"1741:1:43","type":"","value":"2"},{"arguments":[{"name":"TICK_OFFSET","nativeSrc":"1748:11:43","nodeType":"YulIdentifier","src":"1748:11:43"},{"name":"_packed","nativeSrc":"1761:7:43","nodeType":"YulIdentifier","src":"1761:7:43"}],"functionName":{"name":"shr","nativeSrc":"1744:3:43","nodeType":"YulIdentifier","src":"1744:3:43"},"nativeSrc":"1744:25:43","nodeType":"YulFunctionCall","src":"1744:25:43"}],"functionName":{"name":"signextend","nativeSrc":"1730:10:43","nodeType":"YulIdentifier","src":"1730:10:43"},"nativeSrc":"1730:40:43","nodeType":"YulFunctionCall","src":"1730:40:43"},"variableNames":[{"name":"_tick","nativeSrc":"1721:5:43","nodeType":"YulIdentifier","src":"1721:5:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8646,"isOffset":false,"isSlot":false,"src":"1748:11:43","valueSize":1},{"declaration":8665,"isOffset":false,"isSlot":false,"src":"1761:7:43","valueSize":1},{"declaration":8668,"isOffset":false,"isSlot":false,"src":"1721:5:43","valueSize":1}],"flags":["memory-safe"],"id":8670,"nodeType":"InlineAssembly","src":"1682:98:43"}]},"id":8672,"implemented":true,"kind":"function","modifiers":[],"name":"tick","nameLocation":"1616:4:43","nodeType":"FunctionDefinition","parameters":{"id":8666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8665,"mutability":"mutable","name":"_packed","nameLocation":"1627:7:43","nodeType":"VariableDeclaration","scope":8672,"src":"1621:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8664,"nodeType":"UserDefinedTypeName","pathNode":{"id":8663,"name":"Slot0","nameLocations":["1621:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"1621:5:43"},"referencedDeclaration":8632,"src":"1621:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"1620:15:43"},"returnParameters":{"id":8669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8668,"mutability":"mutable","name":"_tick","nameLocation":"1665:5:43","nodeType":"VariableDeclaration","scope":8672,"src":"1659:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8667,"name":"int24","nodeType":"ElementaryTypeName","src":"1659:5:43","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1658:13:43"},"scope":8745,"src":"1607:179:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8681,"nodeType":"Block","src":"1872:133:43","statements":[{"AST":{"nativeSrc":"1907:92:43","nodeType":"YulBlock","src":"1907:92:43","statements":[{"nativeSrc":"1921:68:43","nodeType":"YulAssignment","src":"1921:68:43","value":{"arguments":[{"name":"MASK_24_BITS","nativeSrc":"1941:12:43","nodeType":"YulIdentifier","src":"1941:12:43"},{"arguments":[{"name":"PROTOCOL_FEE_OFFSET","nativeSrc":"1959:19:43","nodeType":"YulIdentifier","src":"1959:19:43"},{"name":"_packed","nativeSrc":"1980:7:43","nodeType":"YulIdentifier","src":"1980:7:43"}],"functionName":{"name":"shr","nativeSrc":"1955:3:43","nodeType":"YulIdentifier","src":"1955:3:43"},"nativeSrc":"1955:33:43","nodeType":"YulFunctionCall","src":"1955:33:43"}],"functionName":{"name":"and","nativeSrc":"1937:3:43","nodeType":"YulIdentifier","src":"1937:3:43"},"nativeSrc":"1937:52:43","nodeType":"YulFunctionCall","src":"1937:52:43"},"variableNames":[{"name":"_protocolFee","nativeSrc":"1921:12:43","nodeType":"YulIdentifier","src":"1921:12:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8643,"isOffset":false,"isSlot":false,"src":"1941:12:43","valueSize":1},{"declaration":8649,"isOffset":false,"isSlot":false,"src":"1959:19:43","valueSize":1},{"declaration":8675,"isOffset":false,"isSlot":false,"src":"1980:7:43","valueSize":1},{"declaration":8678,"isOffset":false,"isSlot":false,"src":"1921:12:43","valueSize":1}],"flags":["memory-safe"],"id":8680,"nodeType":"InlineAssembly","src":"1882:117:43"}]},"id":8682,"implemented":true,"kind":"function","modifiers":[],"name":"protocolFee","nameLocation":"1801:11:43","nodeType":"FunctionDefinition","parameters":{"id":8676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8675,"mutability":"mutable","name":"_packed","nameLocation":"1819:7:43","nodeType":"VariableDeclaration","scope":8682,"src":"1813:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8674,"nodeType":"UserDefinedTypeName","pathNode":{"id":8673,"name":"Slot0","nameLocations":["1813:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"1813:5:43"},"referencedDeclaration":8632,"src":"1813:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"1812:15:43"},"returnParameters":{"id":8679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8678,"mutability":"mutable","name":"_protocolFee","nameLocation":"1858:12:43","nodeType":"VariableDeclaration","scope":8682,"src":"1851:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8677,"name":"uint24","nodeType":"ElementaryTypeName","src":"1851:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1850:21:43"},"scope":8745,"src":"1792:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8691,"nodeType":"Block","src":"2079:121:43","statements":[{"AST":{"nativeSrc":"2114:80:43","nodeType":"YulBlock","src":"2114:80:43","statements":[{"nativeSrc":"2128:56:43","nodeType":"YulAssignment","src":"2128:56:43","value":{"arguments":[{"name":"MASK_24_BITS","nativeSrc":"2142:12:43","nodeType":"YulIdentifier","src":"2142:12:43"},{"arguments":[{"name":"LP_FEE_OFFSET","nativeSrc":"2160:13:43","nodeType":"YulIdentifier","src":"2160:13:43"},{"name":"_packed","nativeSrc":"2175:7:43","nodeType":"YulIdentifier","src":"2175:7:43"}],"functionName":{"name":"shr","nativeSrc":"2156:3:43","nodeType":"YulIdentifier","src":"2156:3:43"},"nativeSrc":"2156:27:43","nodeType":"YulFunctionCall","src":"2156:27:43"}],"functionName":{"name":"and","nativeSrc":"2138:3:43","nodeType":"YulIdentifier","src":"2138:3:43"},"nativeSrc":"2138:46:43","nodeType":"YulFunctionCall","src":"2138:46:43"},"variableNames":[{"name":"_lpFee","nativeSrc":"2128:6:43","nodeType":"YulIdentifier","src":"2128:6:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8652,"isOffset":false,"isSlot":false,"src":"2160:13:43","valueSize":1},{"declaration":8643,"isOffset":false,"isSlot":false,"src":"2142:12:43","valueSize":1},{"declaration":8688,"isOffset":false,"isSlot":false,"src":"2128:6:43","valueSize":1},{"declaration":8685,"isOffset":false,"isSlot":false,"src":"2175:7:43","valueSize":1}],"flags":["memory-safe"],"id":8690,"nodeType":"InlineAssembly","src":"2089:105:43"}]},"id":8692,"implemented":true,"kind":"function","modifiers":[],"name":"lpFee","nameLocation":"2020:5:43","nodeType":"FunctionDefinition","parameters":{"id":8686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8685,"mutability":"mutable","name":"_packed","nameLocation":"2032:7:43","nodeType":"VariableDeclaration","scope":8692,"src":"2026:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8684,"nodeType":"UserDefinedTypeName","pathNode":{"id":8683,"name":"Slot0","nameLocations":["2026:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"2026:5:43"},"referencedDeclaration":8632,"src":"2026:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"2025:15:43"},"returnParameters":{"id":8689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8688,"mutability":"mutable","name":"_lpFee","nameLocation":"2071:6:43","nodeType":"VariableDeclaration","scope":8692,"src":"2064:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8687,"name":"uint24","nodeType":"ElementaryTypeName","src":"2064:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2063:15:43"},"scope":8745,"src":"2011:189:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8704,"nodeType":"Block","src":"2332:147:43","statements":[{"AST":{"nativeSrc":"2367:106:43","nodeType":"YulBlock","src":"2367:106:43","statements":[{"nativeSrc":"2381:82:43","nodeType":"YulAssignment","src":"2381:82:43","value":{"arguments":[{"arguments":[{"arguments":[{"name":"MASK_160_BITS","nativeSrc":"2403:13:43","nodeType":"YulIdentifier","src":"2403:13:43"}],"functionName":{"name":"not","nativeSrc":"2399:3:43","nodeType":"YulIdentifier","src":"2399:3:43"},"nativeSrc":"2399:18:43","nodeType":"YulFunctionCall","src":"2399:18:43"},{"name":"_packed","nativeSrc":"2419:7:43","nodeType":"YulIdentifier","src":"2419:7:43"}],"functionName":{"name":"and","nativeSrc":"2395:3:43","nodeType":"YulIdentifier","src":"2395:3:43"},"nativeSrc":"2395:32:43","nodeType":"YulFunctionCall","src":"2395:32:43"},{"arguments":[{"name":"MASK_160_BITS","nativeSrc":"2433:13:43","nodeType":"YulIdentifier","src":"2433:13:43"},{"name":"_sqrtPriceX96","nativeSrc":"2448:13:43","nodeType":"YulIdentifier","src":"2448:13:43"}],"functionName":{"name":"and","nativeSrc":"2429:3:43","nodeType":"YulIdentifier","src":"2429:3:43"},"nativeSrc":"2429:33:43","nodeType":"YulFunctionCall","src":"2429:33:43"}],"functionName":{"name":"or","nativeSrc":"2392:2:43","nodeType":"YulIdentifier","src":"2392:2:43"},"nativeSrc":"2392:71:43","nodeType":"YulFunctionCall","src":"2392:71:43"},"variableNames":[{"name":"_result","nativeSrc":"2381:7:43","nodeType":"YulIdentifier","src":"2381:7:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8640,"isOffset":false,"isSlot":false,"src":"2403:13:43","valueSize":1},{"declaration":8640,"isOffset":false,"isSlot":false,"src":"2433:13:43","valueSize":1},{"declaration":8695,"isOffset":false,"isSlot":false,"src":"2419:7:43","valueSize":1},{"declaration":8701,"isOffset":false,"isSlot":false,"src":"2381:7:43","valueSize":1},{"declaration":8697,"isOffset":false,"isSlot":false,"src":"2448:13:43","valueSize":1}],"flags":["memory-safe"],"id":8703,"nodeType":"InlineAssembly","src":"2342:131:43"}]},"id":8705,"implemented":true,"kind":"function","modifiers":[],"name":"setSqrtPriceX96","nameLocation":"2240:15:43","nodeType":"FunctionDefinition","parameters":{"id":8698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8695,"mutability":"mutable","name":"_packed","nameLocation":"2262:7:43","nodeType":"VariableDeclaration","scope":8705,"src":"2256:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8694,"nodeType":"UserDefinedTypeName","pathNode":{"id":8693,"name":"Slot0","nameLocations":["2256:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"2256:5:43"},"referencedDeclaration":8632,"src":"2256:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"},{"constant":false,"id":8697,"mutability":"mutable","name":"_sqrtPriceX96","nameLocation":"2279:13:43","nodeType":"VariableDeclaration","scope":8705,"src":"2271:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8696,"name":"uint160","nodeType":"ElementaryTypeName","src":"2271:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2255:38:43"},"returnParameters":{"id":8702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8701,"mutability":"mutable","name":"_result","nameLocation":"2323:7:43","nodeType":"VariableDeclaration","scope":8705,"src":"2317:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8700,"nodeType":"UserDefinedTypeName","pathNode":{"id":8699,"name":"Slot0","nameLocations":["2317:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"2317:5:43"},"referencedDeclaration":8632,"src":"2317:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"2316:15:43"},"scope":8745,"src":"2231:248:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8717,"nodeType":"Block","src":"2568:173:43","statements":[{"AST":{"nativeSrc":"2603:132:43","nodeType":"YulBlock","src":"2603:132:43","statements":[{"nativeSrc":"2617:108:43","nodeType":"YulAssignment","src":"2617:108:43","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"TICK_OFFSET","nativeSrc":"2643:11:43","nodeType":"YulIdentifier","src":"2643:11:43"},{"name":"MASK_24_BITS","nativeSrc":"2656:12:43","nodeType":"YulIdentifier","src":"2656:12:43"}],"functionName":{"name":"shl","nativeSrc":"2639:3:43","nodeType":"YulIdentifier","src":"2639:3:43"},"nativeSrc":"2639:30:43","nodeType":"YulFunctionCall","src":"2639:30:43"}],"functionName":{"name":"not","nativeSrc":"2635:3:43","nodeType":"YulIdentifier","src":"2635:3:43"},"nativeSrc":"2635:35:43","nodeType":"YulFunctionCall","src":"2635:35:43"},{"name":"_packed","nativeSrc":"2672:7:43","nodeType":"YulIdentifier","src":"2672:7:43"}],"functionName":{"name":"and","nativeSrc":"2631:3:43","nodeType":"YulIdentifier","src":"2631:3:43"},"nativeSrc":"2631:49:43","nodeType":"YulFunctionCall","src":"2631:49:43"},{"arguments":[{"name":"TICK_OFFSET","nativeSrc":"2686:11:43","nodeType":"YulIdentifier","src":"2686:11:43"},{"arguments":[{"name":"MASK_24_BITS","nativeSrc":"2703:12:43","nodeType":"YulIdentifier","src":"2703:12:43"},{"name":"_tick","nativeSrc":"2717:5:43","nodeType":"YulIdentifier","src":"2717:5:43"}],"functionName":{"name":"and","nativeSrc":"2699:3:43","nodeType":"YulIdentifier","src":"2699:3:43"},"nativeSrc":"2699:24:43","nodeType":"YulFunctionCall","src":"2699:24:43"}],"functionName":{"name":"shl","nativeSrc":"2682:3:43","nodeType":"YulIdentifier","src":"2682:3:43"},"nativeSrc":"2682:42:43","nodeType":"YulFunctionCall","src":"2682:42:43"}],"functionName":{"name":"or","nativeSrc":"2628:2:43","nodeType":"YulIdentifier","src":"2628:2:43"},"nativeSrc":"2628:97:43","nodeType":"YulFunctionCall","src":"2628:97:43"},"variableNames":[{"name":"_result","nativeSrc":"2617:7:43","nodeType":"YulIdentifier","src":"2617:7:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8643,"isOffset":false,"isSlot":false,"src":"2656:12:43","valueSize":1},{"declaration":8643,"isOffset":false,"isSlot":false,"src":"2703:12:43","valueSize":1},{"declaration":8646,"isOffset":false,"isSlot":false,"src":"2643:11:43","valueSize":1},{"declaration":8646,"isOffset":false,"isSlot":false,"src":"2686:11:43","valueSize":1},{"declaration":8708,"isOffset":false,"isSlot":false,"src":"2672:7:43","valueSize":1},{"declaration":8714,"isOffset":false,"isSlot":false,"src":"2617:7:43","valueSize":1},{"declaration":8710,"isOffset":false,"isSlot":false,"src":"2717:5:43","valueSize":1}],"flags":["memory-safe"],"id":8716,"nodeType":"InlineAssembly","src":"2578:157:43"}]},"id":8718,"implemented":true,"kind":"function","modifiers":[],"name":"setTick","nameLocation":"2494:7:43","nodeType":"FunctionDefinition","parameters":{"id":8711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8708,"mutability":"mutable","name":"_packed","nameLocation":"2508:7:43","nodeType":"VariableDeclaration","scope":8718,"src":"2502:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8707,"nodeType":"UserDefinedTypeName","pathNode":{"id":8706,"name":"Slot0","nameLocations":["2502:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"2502:5:43"},"referencedDeclaration":8632,"src":"2502:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"},{"constant":false,"id":8710,"mutability":"mutable","name":"_tick","nameLocation":"2523:5:43","nodeType":"VariableDeclaration","scope":8718,"src":"2517:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8709,"name":"int24","nodeType":"ElementaryTypeName","src":"2517:5:43","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2501:28:43"},"returnParameters":{"id":8715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8714,"mutability":"mutable","name":"_result","nameLocation":"2559:7:43","nodeType":"VariableDeclaration","scope":8718,"src":"2553:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8713,"nodeType":"UserDefinedTypeName","pathNode":{"id":8712,"name":"Slot0","nameLocations":["2553:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"2553:5:43"},"referencedDeclaration":8632,"src":"2553:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"2552:15:43"},"scope":8745,"src":"2485:256:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8730,"nodeType":"Block","src":"2845:270:43","statements":[{"AST":{"nativeSrc":"2880:229:43","nodeType":"YulBlock","src":"2880:229:43","statements":[{"nativeSrc":"2894:205:43","nodeType":"YulAssignment","src":"2894:205:43","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"PROTOCOL_FEE_OFFSET","nativeSrc":"2957:19:43","nodeType":"YulIdentifier","src":"2957:19:43"},{"name":"MASK_24_BITS","nativeSrc":"2978:12:43","nodeType":"YulIdentifier","src":"2978:12:43"}],"functionName":{"name":"shl","nativeSrc":"2953:3:43","nodeType":"YulIdentifier","src":"2953:3:43"},"nativeSrc":"2953:38:43","nodeType":"YulFunctionCall","src":"2953:38:43"}],"functionName":{"name":"not","nativeSrc":"2949:3:43","nodeType":"YulIdentifier","src":"2949:3:43"},"nativeSrc":"2949:43:43","nodeType":"YulFunctionCall","src":"2949:43:43"},{"name":"_packed","nativeSrc":"2994:7:43","nodeType":"YulIdentifier","src":"2994:7:43"}],"functionName":{"name":"and","nativeSrc":"2945:3:43","nodeType":"YulIdentifier","src":"2945:3:43"},"nativeSrc":"2945:57:43","nodeType":"YulFunctionCall","src":"2945:57:43"},{"arguments":[{"name":"PROTOCOL_FEE_OFFSET","nativeSrc":"3028:19:43","nodeType":"YulIdentifier","src":"3028:19:43"},{"arguments":[{"name":"MASK_24_BITS","nativeSrc":"3053:12:43","nodeType":"YulIdentifier","src":"3053:12:43"},{"name":"_protocolFee","nativeSrc":"3067:12:43","nodeType":"YulIdentifier","src":"3067:12:43"}],"functionName":{"name":"and","nativeSrc":"3049:3:43","nodeType":"YulIdentifier","src":"3049:3:43"},"nativeSrc":"3049:31:43","nodeType":"YulFunctionCall","src":"3049:31:43"}],"functionName":{"name":"shl","nativeSrc":"3024:3:43","nodeType":"YulIdentifier","src":"3024:3:43"},"nativeSrc":"3024:57:43","nodeType":"YulFunctionCall","src":"3024:57:43"}],"functionName":{"name":"or","nativeSrc":"2921:2:43","nodeType":"YulIdentifier","src":"2921:2:43"},"nativeSrc":"2921:178:43","nodeType":"YulFunctionCall","src":"2921:178:43"},"variableNames":[{"name":"_result","nativeSrc":"2894:7:43","nodeType":"YulIdentifier","src":"2894:7:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8643,"isOffset":false,"isSlot":false,"src":"2978:12:43","valueSize":1},{"declaration":8643,"isOffset":false,"isSlot":false,"src":"3053:12:43","valueSize":1},{"declaration":8649,"isOffset":false,"isSlot":false,"src":"2957:19:43","valueSize":1},{"declaration":8649,"isOffset":false,"isSlot":false,"src":"3028:19:43","valueSize":1},{"declaration":8721,"isOffset":false,"isSlot":false,"src":"2994:7:43","valueSize":1},{"declaration":8723,"isOffset":false,"isSlot":false,"src":"3067:12:43","valueSize":1},{"declaration":8727,"isOffset":false,"isSlot":false,"src":"2894:7:43","valueSize":1}],"flags":["memory-safe"],"id":8729,"nodeType":"InlineAssembly","src":"2855:254:43"}]},"id":8731,"implemented":true,"kind":"function","modifiers":[],"name":"setProtocolFee","nameLocation":"2756:14:43","nodeType":"FunctionDefinition","parameters":{"id":8724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8721,"mutability":"mutable","name":"_packed","nameLocation":"2777:7:43","nodeType":"VariableDeclaration","scope":8731,"src":"2771:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8720,"nodeType":"UserDefinedTypeName","pathNode":{"id":8719,"name":"Slot0","nameLocations":["2771:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"2771:5:43"},"referencedDeclaration":8632,"src":"2771:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"},{"constant":false,"id":8723,"mutability":"mutable","name":"_protocolFee","nameLocation":"2793:12:43","nodeType":"VariableDeclaration","scope":8731,"src":"2786:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8722,"name":"uint24","nodeType":"ElementaryTypeName","src":"2786:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2770:36:43"},"returnParameters":{"id":8728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8727,"mutability":"mutable","name":"_result","nameLocation":"2836:7:43","nodeType":"VariableDeclaration","scope":8731,"src":"2830:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8726,"nodeType":"UserDefinedTypeName","pathNode":{"id":8725,"name":"Slot0","nameLocations":["2830:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"2830:5:43"},"referencedDeclaration":8632,"src":"2830:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"2829:15:43"},"scope":8745,"src":"2747:368:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8743,"nodeType":"Block","src":"3207:194:43","statements":[{"AST":{"nativeSrc":"3242:153:43","nodeType":"YulBlock","src":"3242:153:43","statements":[{"nativeSrc":"3256:129:43","nodeType":"YulAssignment","src":"3256:129:43","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"LP_FEE_OFFSET","nativeSrc":"3298:13:43","nodeType":"YulIdentifier","src":"3298:13:43"},{"name":"MASK_24_BITS","nativeSrc":"3313:12:43","nodeType":"YulIdentifier","src":"3313:12:43"}],"functionName":{"name":"shl","nativeSrc":"3294:3:43","nodeType":"YulIdentifier","src":"3294:3:43"},"nativeSrc":"3294:32:43","nodeType":"YulFunctionCall","src":"3294:32:43"}],"functionName":{"name":"not","nativeSrc":"3290:3:43","nodeType":"YulIdentifier","src":"3290:3:43"},"nativeSrc":"3290:37:43","nodeType":"YulFunctionCall","src":"3290:37:43"},{"name":"_packed","nativeSrc":"3329:7:43","nodeType":"YulIdentifier","src":"3329:7:43"}],"functionName":{"name":"and","nativeSrc":"3286:3:43","nodeType":"YulIdentifier","src":"3286:3:43"},"nativeSrc":"3286:51:43","nodeType":"YulFunctionCall","src":"3286:51:43"},{"arguments":[{"name":"LP_FEE_OFFSET","nativeSrc":"3343:13:43","nodeType":"YulIdentifier","src":"3343:13:43"},{"arguments":[{"name":"MASK_24_BITS","nativeSrc":"3362:12:43","nodeType":"YulIdentifier","src":"3362:12:43"},{"name":"_lpFee","nativeSrc":"3376:6:43","nodeType":"YulIdentifier","src":"3376:6:43"}],"functionName":{"name":"and","nativeSrc":"3358:3:43","nodeType":"YulIdentifier","src":"3358:3:43"},"nativeSrc":"3358:25:43","nodeType":"YulFunctionCall","src":"3358:25:43"}],"functionName":{"name":"shl","nativeSrc":"3339:3:43","nodeType":"YulIdentifier","src":"3339:3:43"},"nativeSrc":"3339:45:43","nodeType":"YulFunctionCall","src":"3339:45:43"}],"functionName":{"name":"or","nativeSrc":"3283:2:43","nodeType":"YulIdentifier","src":"3283:2:43"},"nativeSrc":"3283:102:43","nodeType":"YulFunctionCall","src":"3283:102:43"},"variableNames":[{"name":"_result","nativeSrc":"3256:7:43","nodeType":"YulIdentifier","src":"3256:7:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8652,"isOffset":false,"isSlot":false,"src":"3298:13:43","valueSize":1},{"declaration":8652,"isOffset":false,"isSlot":false,"src":"3343:13:43","valueSize":1},{"declaration":8643,"isOffset":false,"isSlot":false,"src":"3313:12:43","valueSize":1},{"declaration":8643,"isOffset":false,"isSlot":false,"src":"3362:12:43","valueSize":1},{"declaration":8736,"isOffset":false,"isSlot":false,"src":"3376:6:43","valueSize":1},{"declaration":8734,"isOffset":false,"isSlot":false,"src":"3329:7:43","valueSize":1},{"declaration":8740,"isOffset":false,"isSlot":false,"src":"3256:7:43","valueSize":1}],"flags":["memory-safe"],"id":8742,"nodeType":"InlineAssembly","src":"3217:178:43"}]},"id":8744,"implemented":true,"kind":"function","modifiers":[],"name":"setLpFee","nameLocation":"3130:8:43","nodeType":"FunctionDefinition","parameters":{"id":8737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8734,"mutability":"mutable","name":"_packed","nameLocation":"3145:7:43","nodeType":"VariableDeclaration","scope":8744,"src":"3139:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8733,"nodeType":"UserDefinedTypeName","pathNode":{"id":8732,"name":"Slot0","nameLocations":["3139:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"3139:5:43"},"referencedDeclaration":8632,"src":"3139:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"},{"constant":false,"id":8736,"mutability":"mutable","name":"_lpFee","nameLocation":"3161:6:43","nodeType":"VariableDeclaration","scope":8744,"src":"3154:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8735,"name":"uint24","nodeType":"ElementaryTypeName","src":"3154:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3138:30:43"},"returnParameters":{"id":8741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8740,"mutability":"mutable","name":"_result","nameLocation":"3198:7:43","nodeType":"VariableDeclaration","scope":8744,"src":"3192:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"},"typeName":{"id":8739,"nodeType":"UserDefinedTypeName","pathNode":{"id":8738,"name":"Slot0","nameLocations":["3192:5:43"],"nodeType":"IdentifierPath","referencedDeclaration":8632,"src":"3192:5:43"},"referencedDeclaration":8632,"src":"3192:5:43","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slot0_$8632","typeString":"Slot0"}},"visibility":"internal"}],"src":"3191:15:43"},"scope":8745,"src":"3121:280:43","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8746,"src":"1058:2345:43","usedErrors":[],"usedEvents":[]}],"src":"32:3372:43"},"id":43},"v4-core/lib/solmate/src/auth/Owned.sol":{"ast":{"absolutePath":"v4-core/lib/solmate/src/auth/Owned.sol","exportedSymbols":{"Owned":[7455]},"id":7456,"license":"AGPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":7397,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"42:24:44"},{"abstract":true,"baseContracts":[],"canonicalName":"Owned","contractDependencies":[],"contractKind":"contract","documentation":{"id":7398,"nodeType":"StructuredDocumentation","src":"68:147:44","text":"@notice Simple single owner authorization mixin.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)"},"fullyImplemented":true,"id":7455,"linearizedBaseContracts":[7455],"name":"Owned","nameLocation":"233:5:44","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":7404,"name":"OwnershipTransferred","nameLocation":"430:20:44","nodeType":"EventDefinition","parameters":{"id":7403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7400,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"467:4:44","nodeType":"VariableDeclaration","scope":7404,"src":"451:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7399,"name":"address","nodeType":"ElementaryTypeName","src":"451:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7402,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"489:8:44","nodeType":"VariableDeclaration","scope":7404,"src":"473:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7401,"name":"address","nodeType":"ElementaryTypeName","src":"473:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"450:48:44"},"src":"424:75:44"},{"constant":false,"functionSelector":"8da5cb5b","id":7406,"mutability":"mutable","name":"owner","nameLocation":"705:5:44","nodeType":"VariableDeclaration","scope":7455,"src":"690:20:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7405,"name":"address","nodeType":"ElementaryTypeName","src":"690:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":7417,"nodeType":"Block","src":"746:73:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7409,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"764:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"768:6:44","memberName":"sender","nodeType":"MemberAccess","src":"764:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7411,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7406,"src":"778:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"764:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e415554484f52495a4544","id":7413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"785:14:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_269df367cd41cace5897a935d0e0858fe4543b5619d45e09af6b124c1bb3d528","typeString":"literal_string \"UNAUTHORIZED\""},"value":"UNAUTHORIZED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_269df367cd41cace5897a935d0e0858fe4543b5619d45e09af6b124c1bb3d528","typeString":"literal_string \"UNAUTHORIZED\""}],"id":7408,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"756:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"756:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7415,"nodeType":"ExpressionStatement","src":"756:44:44"},{"id":7416,"nodeType":"PlaceholderStatement","src":"811:1:44"}]},"id":7418,"name":"onlyOwner","nameLocation":"726:9:44","nodeType":"ModifierDefinition","parameters":{"id":7407,"nodeType":"ParameterList","parameters":[],"src":"735:2:44"},"src":"717:102:44","virtual":true,"visibility":"internal"},{"body":{"id":7435,"nodeType":"Block","src":"1035:87:44","statements":[{"expression":{"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7423,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7406,"src":"1045:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7424,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"1053:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1045:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7426,"nodeType":"ExpressionStatement","src":"1045:14:44"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":7430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1104: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":7429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1096:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7428,"name":"address","nodeType":"ElementaryTypeName","src":"1096:7:44","typeDescriptions":{}}},"id":7431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1096:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7432,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"1108:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7427,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"1075:20:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":7433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1075:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7434,"nodeType":"EmitStatement","src":"1070:45:44"}]},"id":7436,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7420,"mutability":"mutable","name":"_owner","nameLocation":"1027:6:44","nodeType":"VariableDeclaration","scope":7436,"src":"1019:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7419,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1018:16:44"},"returnParameters":{"id":7422,"nodeType":"ParameterList","parameters":[],"src":"1035:0:44"},"scope":7455,"src":"1007:115:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7453,"nodeType":"Block","src":"1382:91:44","statements":[{"expression":{"id":7445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7443,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7406,"src":"1392:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7444,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7438,"src":"1400:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1392:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7446,"nodeType":"ExpressionStatement","src":"1392:16:44"},{"eventCall":{"arguments":[{"expression":{"id":7448,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1445:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1449:6:44","memberName":"sender","nodeType":"MemberAccess","src":"1445:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7450,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7438,"src":"1457:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7447,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"1424:20:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":7451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1424:42:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7452,"nodeType":"EmitStatement","src":"1419:47:44"}]},"functionSelector":"f2fde38b","id":7454,"implemented":true,"kind":"function","modifiers":[{"id":7441,"kind":"modifierInvocation","modifierName":{"id":7440,"name":"onlyOwner","nameLocations":["1372:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":7418,"src":"1372:9:44"},"nodeType":"ModifierInvocation","src":"1372:9:44"}],"name":"transferOwnership","nameLocation":"1321:17:44","nodeType":"FunctionDefinition","parameters":{"id":7439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7438,"mutability":"mutable","name":"newOwner","nameLocation":"1347:8:44","nodeType":"VariableDeclaration","scope":7454,"src":"1339:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7437,"name":"address","nodeType":"ElementaryTypeName","src":"1339:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1338:18:44"},"returnParameters":{"id":7442,"nodeType":"ParameterList","parameters":[],"src":"1382:0:44"},"scope":7455,"src":"1312:161:44","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":7456,"src":"215:1260:44","usedErrors":[],"usedEvents":[7404]}],"src":"42:1434:44"},"id":44}}}